Apache Camel - Componentes

Camel fornece vários componentes pré-construídos.

Neste capítulo, discutiremos alguns componentes importantes do camel-core módulo.

Feijão

o Beancomponente vincula beans a trocas de mensagens Camel. O URI para criar um endpoint é especificado comobean:beanID, Onde beanID é o nome do bean conforme especificado no 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 como o endpoint é especificado usando o bean:protocolo. Você pode opcionalmente especificar o método de bean que deve ser chamado; neste caso, o método chamadoplaceOrderserá chamado durante a avaliação da expressão Endpoint. oMilkOrder é um nome JNDI para o MilkOrderProcessorJavabean conforme registrado nas duas primeiras linhas do trecho de código. A definição deMilkOrderProcessor em si é omitido aqui por brevidade.

Direto

Você deve ter notado o uso de Directem nossos exemplos anteriores. Para enviar um pedido a um fornecedor de óleo, usamosdirect:oilna especificação do Endpoint. O uso deDirectcomponente permite que você chame um ponto de extremidade de forma síncrona. Os dois trechos de código a seguir de nossos exemplos anteriores ilustram o uso deDirect -

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

E,

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

Arquivo

o Filecomponente fornece acesso ao sistema de arquivos em sua máquina. Usando este componente, você poderá salvar mensagens de outros componentes em um disco local. Além disso, permite que outros componentes do Camel processem os arquivos locais. Você pode usar qualquer umfile:directoryName[?options] ou file://directoryName[?options]como um formato URI ao usar o componente Arquivo. Você já viu o uso deste componente -

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

Observe que o Filecomponente por padrão leva o nome do diretório. Portanto, o conteúdo do diretório de pedidos será considerado como conteúdo de entrada. Para especificar um determinado arquivo noorder diretório, você usará a seguinte instrução -

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

Registro

o LogO componente permite que você registre mensagens no mecanismo de registro subjacente. Camel usa Simple Logging Facade for Java (SLF4J) como uma abstração para várias estruturas de registro. Você pode usarjava.util.logging, logback, log4jpara registro. Este trecho de código ilustra o uso doLog componente -

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

SEDA

o SEDA componente permite que você chame de forma assíncrona outro ponto de extremidade na mesma CamelContext. Se você deseja chamar através de instâncias CamelContext, você precisa usarVMcomponente. O uso de SEDA é ilustrado aqui -

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

Nesta rota, iremos simplesmente encaminhar os pedidos para nextOrderfila assíncrona. Um cliente que se inscreveu nesta fila selecionará as mensagens dessa fila.

Cronômetro

o TimerO componente é usado para enviar mensagens em intervalos regulares e, portanto, pode ser muito útil ao testar aplicativos Camel. O snippet de código aqui dispara uma mensagem de teste para o console a cada dois segundos -

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