Apache Camel é um framework de integração de código-fonte aberto que torna a integração de sistemas bastante simples. Utilizando um integrador podemos nos concentrar mais em como interoperar com o sistema, ao invés de nos preocuparmos em como o sistema que estamos integrando realmente funciona internamente. O Apache Camel provê simplicidade e abstrações gerenciáveis para sistemas complexos, devido a essas características o Apache Camel é considerado um excelente framework de integração. Além disso, o Apache Camel torna a integração nos projetos de software bastante produtiva. Basicamente com pouco código podemos fazer muitas coisas que precisariam de muitos códigos, bibliotecas externas, controle interno, etc.

O projeto Apache Camel iniciou em 2007 e apesar de ser um projeto jovem, o Camel é um projeto de código-fonte aberto bastante maduro, disponível sobre a licença Apache 2 e possui uma comunidade extremamente forte.

Principais Características

Abaixo veremos quais são as principais características que o Apache Camel oferece aos desenvolvedores que precisam fazer integração em seus sistemas:

ROTEAMENTO E MOTOR DE MEDIAÇÃO

A característica central do Camel é o roteamento e o seu motor de mediação. Um mecanismo de roteamento irá seletivamente mover uma mensagem, com base na configuração da rota. No Camel as rotas são configuradas com uma combinação de Enterprise Integration Patterns (EIP) e uma linguagem específica de domínio (DSL).

ENTERPRISE INTEGRATION PATTERNS (EIPS)

Embora os problemas de integração sejam diversos, Gregor Hohpe e Bobby Woolf verificaram que muitos problemas e suas soluções são bem familiares. Eles catalogaram em seu livro Enterprise Integration Patterns diversos padrões de integração, é um livro referência nessa área de integração. Entendendo esses padrões fica bastante simples e rápido entender o Apache Camel. Assim como os Padrões de Projetos (Design Patterns), os padrões de integração (Integration Patterns) providenciam uma solução para um dado problema e ajudam a definir e comunicar o problema. O Camel é fortemente baseado nesses padrões de integração.

O objetivo do Camel é também fechar essa lacuna provendo uma linguagem para descrever as soluções de integração. Existe quase uma relação de um para um com os padrões descritos no Enterprise Integration Patterns e o Camel DSL (linguagem específica de domínio).

DOMAIN-SPECIFIC LANGUAGE (DSL)

A Linguagem Específica de Domínio (DSL) do Camel é a maior contribuição para área de integração. Outros frameworks de integração também utilizam uma DSL, porém diferente do Camel essas DSLs são baseadas em linguagens personalizadas. O Apache Camel oferece múltiplas DSLs para diversas linguagens de programação como Java, Scala, Groovy e também permite regras de roteamento especificadas em um arquivo XML.

A proposta da DSL é facilitar bastante a vida do programador permitindo focar nos problemas da integração ao invés de uma ferramenta específica. Embora o Apache Camel seja escrito em Java ele suporta uma mistura de diversas linguagens.

Abaixo segue alguns exemplos de DSL usando diferentes linguagens com as funcionalidades equivalentes:

  • Java DSL:
from("file:data/inbox").to("jms:queue:order");
  • Spring DSL:
<route>
<from uri="file:data/inbox"/>
<to uri="jms:queue:order"/>
</route>
  • Scala DSL:
from "file:data/inbox" -> "jms:queue:order"

O Apache Camel ainda possui diversas outras características importantes, mais informações pode ser obtidas no site principal do Apache Camel que constam em nossas referências bibliográficas.

Composição do Apache CAMEL

O núcleo do framework Camel é a engine de roteamento (Routing Engine). Esta rotina permite aos desenvolvedores definirem suas próprias regras para as rotas, decidir a partir de quais fontes aceita-se mensagens, e determinar como processar e enviar essas mensagens para outros destinos. O Camel usa uma linguagem de integração que permite definir regras de roteamento bastante complexas.

Um dos princípios fundamentais do Camel é que ele não faz nenhuma suposição sobre o tipo de informação que é necessária para processar. Isso é importante, pois dá ao desenvolvedor a oportunidade de integrar qualquer tipo de sistema, sem a necessidade de converter a sua informação para um formato específico.

Portanto, o Camel oferece um altíssimo nível de abstração que nos permite interagir com vários sistemas usando a mesma API desconsiderando protocolos ou tipo de informações que o sistema está usando. Componentes no Camel proveem implementações específicas da API que direciona para diferentes protocolos e tipo de informações. O Camel já vem com suporte para mais ou menos 80 tipos de protocolos e tipo de mensagens. No entanto, ele é extensível e modular permitindo implementar plugins para seus próprios protocolos, seja proprietário ou não.

Vale ressaltar que Camel não é um ESB (Enterprise Service Bus), embora alguns chamam o Camel de um leve ESB por causa de seu apoio para o roteamento, transformação, monitoramento, orquestração, e assim por diante. Camel também não é um container, mas pode ser publicado (deployed) em um container como o tomcat por exemplo.

Instalando o Apache Camel

Para instalar o Apache Camel primeiramente devemos fazer o download do Apache Camel através do link abaixo:http://camel.apache.org/download.html

Nesta tela encontram-se as diferentes distribuições para que possamos escolher a equivalente ao nosso sistema operacional, conforme é demonstrado na figura abaixo:

Downloads disponíveis para o Apache Camel

Figura 1: Downloads disponíveis para o Apache Camel.

Agora o próximo passo é descompactar o arquivo em uma pasta do sistema. No meu caso eu descompactei em: C:\apache-camel-2.11.0

Descompactado o Apache Camel agora basta colocar os jars no Eclipse. No meu caso estou usando o Eclipse KEPLER. Para fazer o download do Eclipse basta baixar o “.zip” ou o executável do eclipse em www.eclipse.org/downloads/.

Depois de instalar o Eclipse basta criar um novo projeto e não esquecer de colocar os jars do Camel no Eclipse. Esse assunto será abordado com mais profundidade nos próximos artigos conforme já solicitado pelo leitores do portal.

Conclusão

Neste artigo estudamos o que é o Apache Camel, quais são as principais características que fazem esse framework ser bastante utilizado e qual é a sua composição principal. Também vimos como instalar o Apache Camel para ser utilizado no Eclipse.

Agradeço aos leitores por continuarem mandando e-mails solicitando novos assuntos e continuar outros. Nos próximos artigos, conforme solicitado pelos leitores, vamos nos aprofundar em como instalar o Apache Camel no Eclipse e como podemos fazer uma aplicação simples passo-a-passo.