Apache Camel - Componentes

Camel proporciona varios componentes prefabricados.

En este capítulo, discutiremos algunos componentes importantes del camel-core módulo.

Frijol

los BeanEl componente une beans a los intercambios de mensajes de Camel. El URI para crear un punto final se especifica comobean:beanID, dónde beanID es el nombre del bean como se especifica en el 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");
   }
});

Observe cómo se especifica el punto final mediante el bean:protocolo. Opcionalmente, puede especificar el método bean que se invocará; en este caso, el método llamadoplaceOrderse invocará al evaluar la expresión de Endpoint. losMilkOrder es un nombre JNDI para el MilkOrderProcessorJavabean registrado en las dos primeras líneas del fragmento de código. La definición deMilkOrderProcessor sí mismo se omite aquí por brevedad.

Directo

Debes haber notado el uso de Directen nuestros ejemplos anteriores. Para enviar un pedido a un proveedor de aceite, usamosdirect:oilen la especificación de Endpoint. El uso deDirectEl componente le permite invocar sincrónicamente un punto final. Los siguientes dos fragmentos de código de nuestros ejemplos anteriores ilustran el uso deDirect -

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

Y,

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

Archivo

los FileEl componente proporciona acceso al sistema de archivos de su máquina. Con este componente, podrá guardar mensajes de otros componentes en un disco local. Además, permite que otros componentes de Camel procesen los archivos locales. Puedes usar cualquierafile:directoryName[?options] o file://directoryName[?options]como formato URI mientras se usa el componente Archivo. Ya ha visto el uso de este componente:

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

Tenga en cuenta que el FileEl componente por defecto toma el nombre del directorio. Por lo tanto, el contenido del directorio de pedidos se tomará como contenido de entrada. Para especificar un archivo en particular en elorder directorio, utilizará la siguiente declaración:

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

Iniciar sesión

los LogEl componente le permite registrar mensajes en el mecanismo de registro subyacente. Camel utiliza Simple Logging Facade para Java (SLF4J) como una abstracción de varios marcos de registro. Puedes utilizarjava.util.logging, logback, log4jpara la tala. Este fragmento de código ilustra el uso deLog componente -

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

SEDA

los SEDA El componente le permite llamar asincrónicamente a otro punto final en el mismo CamelContext. Si desea llamar a través de instancias de CamelContext, debe usarVMcomponente. El uso de SEDA se ilustra aquí:

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

En esta ruta, simplemente enrutaremos los pedidos a nextOrdercola asincrónica. Un cliente que se haya suscrito a esta cola recogerá los mensajes de esta cola.

Temporizador

los TimerEl componente se utiliza para enviar mensajes a intervalos regulares y, por lo tanto, puede ser muy útil al probar aplicaciones Camel. El fragmento de código aquí dispara un mensaje de prueba a la consola cada dos segundos:

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