L'Interrogation Du Fichier Des Consommateurs Dans Apache
J'ai commencé à jouer avec Apache camel récemment. Donc, étant le expérimentales de type I pensé que je voudrais créer un projet simple qui permettrait de scanner un répertoire de fichiers chaque couple de secondes pour voir si j'ai un nouveau fichier, sélectionnez ce fichier et le copier dans un autre dossier. Plus tard je veux placer ces fichiers dans une base de données.
Donc les garder avec les bases en premier, j'ai créé un itinéraire, telles que les suivantes:
from("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
Cela a fonctionné et j'ai pensé ok permet d'ajouter un timer. Au départ, j'ai fait l'erreur d'utiliser une minuterie et d'essayer ceci:
from("timer://myTimer?period=50").to("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
Puis j'ai eu une étrange exception de ne pas être capable d'écrire un fichier. J'ai alors réalisé en plaçant le fichier route après le minuteur en route, il est devenu un producteur. Donc j'ai recherché un peu et c'est là où je suis un peu confus.
Donc, à partir de ma compréhension du fichier de composant utilise la date prévue de sondage modèle. Il y a même un pollStrategy option dans le fichier de l'itinéraire modèle d'url. Il y a également un bureau de vote à la Consommation EIP.
Voici donc où ma confusion s'installe.
1) Si le fichier composant utilise la date prévue de sondage motif de ne l'utiliser/mettre en œuvre les bureaux de conumser EIP?
2) Comment puis-je ajouter une simple annexe du fichier de composant de consommer des fichiers de dire toutes les 30 secondes?
3) Comment puis-je créer mon propre pollingStrategy par la mise en œuvre de org.apache.à dos de chameau.PollingConsumerPollStrategy?
Je pense que je peux faire quelque chose comme ceci:
from("file://c:/CTest/inbox?noop=true&pollStrategy=some-expression")
.to("file://C:/Ctest/outbox");
J'ai essayé d'obtenir quelques exemples autour de cela, mais je suis pas à la recherche à la bonne place ou manquant, le complot complètement. Je suppose que ce n'est pas tellement un code concernant la question, mais plus d'un quelle est la meilleure stratégie/motif de cette approche.
Merci
Namphibian
OriginalL'auteur Namphibian | 2012-03-17
Vous devez vous connecter pour publier un commentaire.
Chameau propose une fonctionnalité appelée routepolicy
http://camel.apache.org/routepolicy.html
Il vous permet d'associer les politiques de routes. Nous fournissons un certain nombre de politiques de la boîte. Une politique peut être n'importe quel genre de logique. Par exemple, nous proposons une stratégie de limitation, qui à la volée de suspension/reprise d'itinéraires basés sur threadsholds.
Un autre le champ politique est une politique de limitation, de sorte que vous pouvez spécifier des "heures d'ouverture" pour un itinéraire. Donc vous pouvez l'utiliser ainsi. Mais son esprit d'ouverture, de sorte que vous spécifiez un début/heure de fin. Il y a un quartz cron en fonction de la politique de http://camel.apache.org/cronscheduledroutepolicy.html de sorte que vous pouvez configurer pour lancer la route le lundi, et le laisser fonctionner pendant un petit moment.
Si vous avez besoin d'arrêter un itinéraire à partir de l'intérieur d'une route, alors c'est un peu plus compliqué, il y a une FAQ à ce sujet ici: http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html
Cela dépend de vos besoins. Le pollEnrich ne peut ramasser un seul fichier à la fois, de sorte qu'il a ses limites, si votre cas d'utilisation est de ramassage et de traiter tous les fichiers d'un répertoire. Si oui, alors l'itinéraire politique fait plus de sens.
OriginalL'auteur Claus Ibsen
Oui, le fichier producteur met en œuvre la ScheduledPollEndpoint. À partir de la doc:
À l'aide de la
delay
option:3) Comment puis-je créer mon propre pollingStrategy par la mise en œuvre de org.apache.à dos de chameau.PollingConsumerPollStrategy?
Regarder le code source: DefaultPollingConsumerPollStrategy ou LimitedPollingConsumerPollStrategy.
Vous utilisez un personnalisé pollStrategy comme ceci:
Où #myPoll j'ai défini dans le registre plus d'infos en bas de cette page.
J'ai juste utilisé le retard et il fonctionne comme un charme. Je ne peux pas croire que c'est facile. Chameau ROCKS!. Question répondue je recherche l'Interrogation personnalisé Stratégie un peu plus! Merci.
Si vous avez besoin de plus de contrôle sur la grille d'interrogation, vous pouvez utiliser le quartz composant et l'utilisation pollEnrich comme suit:
from("quartXXXX").pollEnrich("file://xx").to(...);
L'esprit que pollEnrich ne sondage d'un fichier à la fois. Donc, si vous avez besoin d'interroger tous les fichiers d'un répertoire, puis sa peut-être plus facile à utiliser l'itinéraire régulier de la politique dont je parle ci-dessous.
Nice, c'est très utile!
OriginalL'auteur ebaxt