2017-09-25 3 views
0

Je souhaite lire les fichiers d'un répertoire avec un consommateur de fichier camel mais j'ai besoin que mon itinéraire soit traité. Donc, je ne peux pas utiliser de threads à l'intérieur de la déroute. Est-il correct d'écrire plusieurs routes à lire à partir du même point de terminaison (même répertoire) avec un petit changement entre les uris (par exemple le type de tri), et ainsi éviter les multiples consommateurs pour le même point final?Plusieurs consommateurs pour le même point de terminaison ne sont pas autorisés

Répondre

1

Oui, bien sûr que vous pouvez faire cela, sachez que vous aurez des consommations concurrentes pour les mêmes fichiers maintenant, alors faites attention aux verrous en lecture. Par défaut, Camel utilise le fichier marqueur.

Vous pouvez également utiliser un délai différent afin qu'ils ne soient pas interrogés au même intervalle/temps. Et vous pouvez trier par hasard pour avoir moins de chance de traiter les mêmes fichiers.

+0

supposons qu'un fichier est en train d'être consommé par route1, et qu'il contient un fichier marqueur (supposons que nous utilisions readLock = changed). Est-ce que route2 sera capable de lire ce fichier aussi? si non, quel est le problème des consommations concurrentes que j'ai ici? – user7916020

+0

En savoir plus dans les documents Camel sur les verrous de lecture. changé ne fonctionnera pas pour l'exclusivité car les deux consommateurs peuvent détecter quand le fichier n'est plus changé et commencer à le lire, cependant un fichier marqueur est exclusif. Ou potentiel fileLock mais cela dépend du JDK et du système de fichiers que vous utilisez, lisez le doc JDK/javadoc à ce sujet etc. –

+0

merci Claus. L'option markerFile cause un problème avec les fichiers volumineux car camel commence à lire le fichier avant que le fichier ne soit entièrement écrit. Mais je sais que le changement utilise également un fichier marqueur, non? alors quel est le problème ? et qu'en est-il de l'option renommer? cela ne résoudra-t-il pas les deux problèmes? – user7916020