Apache Camel - Visão geral
Camel é uma caixa preta que recebe mensagens de algum endpoint e envia para outro. Na caixa preta, as mensagens podem ser processadas ou simplesmente redirecionadas.
Então, por que ter uma estrutura para isso? Em situações práticas, conforme visto no estudo de caso de introdução, pode haver muitos remetentes e muitos receptores, cada um seguindo seu próprio protocolo, como ftp, http e jms. O sistema pode exigir muitas regras complexas, como a mensagem do remetente A deve ser entregue apenas para B e C. Em algumas situações, pode ser necessário traduzir a mensagem para outro formato que o destinatário espera. Esta tradução pode estar sujeita a certas condições com base no conteúdo da mensagem. Então, essencialmente, você pode precisar traduzir entre protocolos, unir componentes, definir regras de roteamento e fornecer filtragem com base no conteúdo da mensagem. Isso é ilustrado na figura a seguir -
Para atender aos requisitos acima e projetar uma arquitetura de software adequada para muitas dessas situações, os Enterprise Integration Patterns ( EIP ) foram documentados por Gregor Hohpe e Bobby Woolf em 2003. Apache Camel fornece a implementação desses padrões e o objetivo deste tutorial é ensinar você como usar o Camel em situações como a descrita na introdução.
Apache Camel é uma estrutura de código aberto. É um middleware orientado a mensagens que fornece roteamento baseado em regras e mecanismo de mediação. Você pode definir regras como se for um pedido de “leite”, redirecioná-lo para um vendedor de leite e se for um pedido de “óleo”, redirecioná-lo para um vendedor de óleo e assim por diante. Usando o Camel, você será capaz de implementar essas regras e fazer o roteamento em um código Java familiar. Isso significa que você pode usar seu Java IDE familiar para definir essas regras em um ambiente de tipo seguro. Não precisamos usar arquivos de configuração XML, que geralmente tendem a ser volumosos. No entanto, o Camel oferece suporte à configuração XML por meio da estrutura Spring, se você preferir usar XML para configurar as regras. Você pode até usar arquivos de configuração XML do Blueprint e até mesmo um Scala DSL, se for um amante do Scala. Também significa que você pode usar seu Java, Scala IDE favorito ou até mesmo um editor XML simples para configurar as regras.
A entrada para este mecanismo pode ser um arquivo de texto delimitado por vírgulas, um POJO (Plain Old Java Object), XML são qualquer um dos vários outros formatos suportados pelo Camel. Da mesma forma, a saída do motor pode ser redirecionada para um arquivo, para uma fila de mensagens ou até mesmo para a tela do seu monitor para você visualizar os pedidos enviados aos respectivos fornecedores. Eles são chamados de endpoints e o Camel suporta o padrão Message Endpoint EIP. Os endpoints Camel são discutidos posteriormente no capítulo Endpoints.
Camel é normalmente usado com Apache ServiceMix , Apache ActiveMQ e Apache CXF para implementar arquiteturas orientadas a serviços.