Apache Camel est une bibliothèque de moteurs de règles très pratique qui peut être utilisée pour traiter les événements et les informations provenant de différentes sources. Vous pouvez transmettre des messages dans différents protocoles tels que VM, HTTP, FTP, JMS et même dans le système de fichiers, et conserver votre logique de fonctionnement et la séparation de la logique de transmission, ce qui peut vous rendre plus concentré sur le contenu du message.
Dans cet article, je fournirai une démonstration d'entrée de camel en langue java.
Créez d'abord un pom.xml d'un projet Maven.
<? .org / 2001 / xmlschema-instance "xsi: schemalocation =" http://maven.apache.org/pom/4.0.0http://maven.apache.org/maven- v4_0.xsd "> <Modelversi . Project.build.sourceencoding> utf-8 </project.build.sourceencoding> <camel.version> 2.11.1 </camel.version> </properties> ency> <proupId> org.apache.camel </pr grouped> < ArfactId> camel-core </letefactId> <DERSE> $ {camel.version} </-version> </pedidency> <dependency> org.slf4j </proupId> <Artifactid> slf4j-simple </reftfactid> <version> 1.7 .5 </ version> </ dépendance> </dependces> </propject>Ici, nous n'utilisons que le package Camel-Core.jar, en fait, il fournit de nombreux composants pratiques que vous pouvez utiliser. Aux fins des enregistrements de journal, j'ai utilisé SLF4J-Simple comme implémentation de l'enregistrement du journal, afin que nous puissions voir la sortie de la console.
Ensuite, nous devons seulement construire une classe de routage. Les routes sont définies par la façon de passer le message d'un bout à l'autre extrémité. Nous créerons des fichiers SRC / Main / Java / CamelCoreMo / TimerRouteBuilder.java, envoyer un message au processeur chaque seconde et l'imprimer simplement.
Package de ("time: // timer1? period = 1000") .process (new processeur () {public void process (échange msg) {log.info ("traitement {}", msg);}});}}Ce qui précède est tout le besoin de cet exemple, et maintenant compiler et exécuter.
BASH> MVN CompileBash> Mvn Exec: Java -dexec.MainClass = org.apache.camel.main.main -dexec.args = '-r camelCoremorouteBuilder'
Notez que nous n'avons pas écrit l'entrée principale de la classe Java.
Contrôle CamelContext
Lorsque le chameau est démarré, il créera un objet CamelContext, qui contient beaucoup d'informations sur la façon d'exécuter Camel, et comprend également la définition de l'itinéraire que nous avons créé. Maintenant, si vous souhaitez obtenir plus de contrôle via CamelContext, vous devez rédiger votre code principal. Je suis ici un exemple simple.
Package CamelCoreMo; STATIC VOID MAIN (String [] Args) lance une exception {new Timermain (). )); ;On peut voir que nous avons réutilisé la classe TimerRouteBuilder existante dans la méthode CreterouteBuilder (). Maintenant, notre classe principale est entièrement contrôlée quand il est créé, démarré et arrêté CamelContext. L'objet contextuel (camelContext) vous permet de contrôler comment configurer le chameau dans un niveau global, pas au niveau de l'itinéraire. Son lien Javadoc donne toutes les méthodes de setter, et vous pouvez étudier ce qu'elle peut faire.
Notez que nous devons également fournir une petite quantité de code dans notre catégorie principale. Tout d'abord, nous devons faire face au problème de la fermeture élégante, nous avons donc ajouté une fonction de fermeture Java pour appeler la méthode stop () du contexte. Deuxièmement, après le début du contexte, nous devons ajouter un bloc de thread. Si vous ne bloquez pas votre fil principal après le démarrage, il sortira simplement après le démarrage, et ce sera inutile. Vous exécuterez Camel en tant que service (comme un serveur) jusqu'à ce que vous appuyez sur la touche CTRL + C pour terminer le processus.
Améliorer la classe principale qui commence à lancer CamelContext
Si vous ne souhaitez pas traiter le code des paramètres de classe principale autant que l'exemple ci-dessus, vous pouvez simplement hériter de la classe org.apache. En utilisant cette classe, vous pouvez non seulement permettre à votre contexte de définir automatiquement, mais également à obtenir toutes les caractéristiques de ligne de commande supplémentaires, telles que la durée du processus de contrôle, permet le suivi, charge une classe d'itinéraire personnalisée, etc.
Reconstruire l'exemple suivant, le code est le suivant:
Package CareDemo; STATIC VOID MAIN (String [] Args) lance une exception {TIMMAIN2 MAIN = NOUVEAU TIMERMAIN2 (); ;}} Maintenant, le code de Timermain2 est inférieur à ce qu'auparavant, vous pouvez l'essayer, il devrait être le même que les fonctionnalités précédentes.
Bash> mvn compilebash> mvn exec: java -dexec.mainclass = camelcoremo.timermain2 -dexec.args = '-t'
Notez qu'après avoir donné l'option -T, le suivi de l'itinéraire sera réservé. Utiliser -H verra toutes les options disponibles.
Ajouter le haricot avec le mécanisme d'enregistrement de Camel
Dans l'exemple de TimeRouteBuilder précédent, nous avons créé un processus anonyme dans le code. Maintenant, si vous souhaitez assembler quelques processus différents, l'ajout d'un haricot à l'ajout d'un mécanisme d'enregistrement de chameau réduira mieux la confusion du code. Camel vous permet d'utiliser le traitement comme Bean dans son espace de registre, puis vous n'avez qu'à les appeler comme des composants de bean. Ce qui suit est mon code de reconstruction:
Package CareDemo; STATIC VOID MAIN (String [] Args) lance une exception {TIMERBEANSMAIN MAIN = NOUVEAU TIMERBEANSMAIN (); ()); Main.AdDouteBuilder (CreaterouteBuilder ()); = 1000 ") .to (" bean: processByBean1 ") .to (" bean: processAgainByBean2 "); ents processeur {public void process (échange msg) {log.info (" premier processus {} ", msg);}} Classe statique Bean2 implémente le processeur {public void Process (échange msg) {log.info ("processus sec {}", msg);}}}Maintenant, la classe d'itinéraire est plus concise et plus claire, et en même temps, le code de traitement a également été reconstruit dans une classe indépendante. Lorsque vous devez rédiger une voie très compliquée pour réaliser la logique métier, cette méthode peut vous aider à mieux organiser et tester votre code. Il vous permet de construire Pojo Bean qui peut être réutilisé comme "LEGO". L'espace de registre de Camel peut également être utilisé pour de nombreuses autres utilisations.
L'exemple d'itinéraire ci-dessus est composé de Java DSL ainsi.
J'espère que cet article peut vous aider à sauter la phase d'exploration du chameau.