Apache Camel - Composants

Camel fournit plusieurs composants pré-construits.

Dans ce chapitre, nous aborderons quelques composants importants du camel-core module.

Haricot

le BeanLe composant lie les beans aux échanges de messages Camel. L'URI pour créer un point de terminaison est spécifié commebean:beanID, où beanID est le nom du bean tel que spécifié dans le Registry.

JndiContext jndiContext = new JndiContext();
jndiContext.bind("MilkOrder", new MilkOrderProcessor());
CamelContext camelContext = new DefaultCamelContext(jndiContext);

camelContext.addRoutes(new RouteBuilder() {
   public void configure() {
      from("direct:bigBasket")
         .to("bean:MilkOrder?method=placeOrder");
   }
});

Notez comment le point de terminaison est spécifié à l'aide du bean:protocole. Vous pouvez éventuellement spécifier la méthode bean à invoquer; dans ce cas, la méthode appeléeplaceOrdersera appelée lors de l'évaluation de l'expression Endpoint. leMilkOrder est un nom JNDI au MilkOrderProcessorJavabean comme enregistré dans les deux premières lignes de l'extrait de code. La définition deMilkOrderProcessor lui-même est omis ici par souci de concision.

Direct

Vous devez avoir remarqué l'utilisation de Directdans nos exemples précédents. Pour envoyer une commande à un vendeur de pétrole, nous avons utilisédirect:oildans la spécification Endpoint. L'utilisation deDirectLe composant vous permet d'appeler de manière synchrone un point de terminaison. Les deux extraits de code suivants de nos exemples précédents illustrent l'utilisation deDirect -

.when(header("order").isEqualTo("oil"))
   .to("direct:oil")

Et,

from("direct:DistributeOrderDSL")
   .process(myProcessor);

Fichier

le FileLe composant permet d'accéder au système de fichiers de votre machine. À l'aide de ce composant, vous pourrez enregistrer les messages d'autres composants sur un disque local. De plus, il permet à d'autres composants Camel de traiter les fichiers locaux. Vous pouvez utiliser soitfile:directoryName[?options] ou file://directoryName[?options]comme format URI lors de l'utilisation du composant File. Vous avez déjà vu l'utilisation de ce composant -

from ("file:/order").to("jms:orderQueue");

Notez que le FileLe composant par défaut prend le nom du répertoire. Par conséquent, le contenu du répertoire de commande sera pris comme contenu d'entrée. Pour spécifier un fichier particulier dans leorder répertoire, vous utiliserez l'instruction suivante -

from ("file:/order?fileName = order.xml").to("jms:orderQueue");

Journal

le LogLe composant vous permet de consigner les messages dans le mécanisme de journalisation sous-jacent. Camel utilise Simple Logging Facade pour Java (SLF4J) comme abstraction de divers frameworks de journalisation. Vous pouvez utiliserjava.util.logging, logback, log4jpour la journalisation. Cet extrait de code illustre l'utilisation duLog composant -

from("direct:DistributeOrderDSL")
   .to("bean:MilkOrder?method = placeOrder")
   .to("log:com.example.com?level = INFO&showBody = true");

SEDA

le SEDA Le composant vous permet d'appeler de manière asynchrone un autre point de terminaison dans le même CamelContext. Si vous souhaitez appeler sur des instances CamelContext, vous devez utiliserVMcomposant. L'utilisation de SEDA est illustrée ici -

from("direct:DistributeOrderDSL")
// send it to the seda queue that is async
   .to("seda:nextOrder")

Dans cet itinéraire, nous acheminerons simplement les commandes vers nextOrderfile d'attente asynchrone. Un client qui s'est abonné à cette file d'attente récupérera les messages de cette file d'attente.

Minuteur

le TimerLe composant est utilisé pour envoyer des messages à intervalles réguliers et peut donc être très utile lors du test des applications Camel. L'extrait de code déclenche ici un message de test vers la console toutes les deux secondes -

from("timer://testTimer?period = 2000")
   .setBody()
   .simple("This is a test message ${header.timer}")
      .to("stream:out");