Configurando Rotas
Uma rota pode ser definida através da Java DSL da seguinte forma:
from("especificação do endpoint")
.to("especificação do endpoint");
Para entender melhor, é necessário desconstruir a declaração da rota. Desta forma:
from()
: é um método utilizado para definir o endpoint inicial da rota. É a partir das mensagens recebidas no endpoint especificado nessa declaração que o Camel inicia uma troca de mensagens. Essa troca de mensagens é o que o Camel chama de Exchange – representado por um objeto de mesmo nome.- Especificação do endpoint: é uma URI utilizada para especificar o endereçamento do endpoint e suas opções, incluindo, por exemplo, caminhos e diretórios quando necessário. Seu formato assemelha-se ao seguinte: ${componente}:${endereçamento e opções do componente$}{opções}. Onde:
- Componente: é um dos componentes do Camel, conforme citado no começo do capítulo.
- Endereçamento: é um endereçamento específico ao componente.
- Opções: opções do componente ou do endereçamento. Seu formato segue o padrão utilizado para a parte “query” utilizadas em URI. Ou seja, assemelhasse ao seguinte formato: ?opção1=valor1&opção2=valor2. As opções e valores são específicas para cada componente.
- Especificação do endpoint: é uma URI utilizada para especificar o endereçamento do endpoint e suas opções, incluindo, por exemplo, caminhos e diretórios quando necessário. Seu formato assemelha-se ao seguinte: ${componente}:${endereçamento e opções do componente$}{opções}. Onde:
to()
: é um método utilizado para definir o(s) endpoint(s) final(is) da rota. É opcional e pode estar presente ou não, de acordo com o padrão de integração utilizado.
Abaixo é mostrado um exemplo de uma declaração simples de rota utilizando a Java DSL:
@Override
public void configure() throws Exception {
JaxbDataFormat readerFormat = FormatBuilder.getReaderFormat();
JaxbDataFormat writerFormat = FormatBuilder.getWriterFormat();
from("activemq:queue:sas.request?" +
"concurrentConsumers=2&" +
"maxConcurrentConsumers=4")
.unmarshal(readerFormat)
.process(new EvalServiceProcessor())
.marshal(writerFormat);
}