O Apache Camel é um framework open-source, baseado em padrões de integração, que visa facilitar o trabalho de implementação de integrações. Vejamos as 12 características principais do Apache Camel.

 

 

1. Engine de roteamento e mediação

A característica principal do Camel é seu engine de roteamento e mediação. Esse mecanismo encaminha mensagens seletivamente, com base na configuração de rotas. As rotas no Camel são configuradas com uma combinação de implementações de padrões de integração (EIPs) e uma linguagem específica de domínio (DSL).

 

2. Padrões de integração corporativos (EIPs)

O projeto Apache Camel é baseado nos padrões de integração de Gregor Hophe e Bob Wolf. Mais informações em:   http://enterpriseintegrationpatterns.com/

 

3. DSL para integração de aplicações

DSL é a sigla de “Domain Especific Language”. Uma DSL é uma linguagem criada especificamente para resolver problemas de um domínio específico, em contraste com linguagens de propósito geral, que são criados para lidar com vários domínios. O Apache Camel possui uma DSL para integração de aplicações corporativas. A implementação principal e mais robusta é baseada em Java. A segunda é a notação XML do Spring. Outra linguagem suportada mais recentemente é Scala.

 

4. Biblioteca extensível de componentes

 

5. Roteador independente de tipo de mensagem

O Apache Camel pode rotear qualquer tipo de conteúdo de mensagem. Ele não está restrito a conteúdo XML. Esta liberdade significa que você não tem que transformar o conteúdo da mensagem em um formato canônico para facilitar o roteamento.

 

6. Arquitetura modular e plugável

O Apache Camel tem uma arquitetura modular e plugável que permite que qualquer componente possa ser carregado independente de: 1) ser distribuído junto com o Camel, 2) ser um componente desenvolvido por terceiros ou 3) uma criação sua personalizada.

 

7. Modelo baseado em POJO

POJOs (Plain Old Java Objects) são os elementos principais para extensão do framework. O Apache Camel permitir que você use POJOs  em qualquer lugar e a qualquer momento em seus projetos de integração. Isso significa que, em muitos lugares você pode estender a funcionalidade interna do framework com seu próprio código personalizado.

 

8. Configuração simplificada

O paradigma de convenção sobre configuração é seguido sempre que possível, os requisitos de configuração são minimizados. Para configurar os endpoints diretamente nas rotas o Camel usa uma configuração fácil e intuitiva de URI.

Por exemplo, você pode configurar um consumidor de arquivos para escanear recursivamente em sub-pastas e incluir somente arquivos .txt:

from("file:data/inbox?recursive=true&include=*.txt”);

 

9. Lightweight core

O Núcleo do Apache Camel é leve. A biblioteca total chega a cerca de 1.6 MB e só tem dependências para o Apache Commons Logging e Fuse – Source Commons Management. Isso torna o Camel fácil de incorporar em qualquer lugar, por exemplo:
  • Um aplicativo Java autônomo,
  • Aplicação Java web,
  • Aplicação Java EE,
  • Aplicação do Primavera,
  • Contêiner JBI,
  • OSGi bundle,
  • Java Web Start, ou
  • Google App engine.
O Apache Camel não é um ESB. Ele foi feito para ser incorporado à plataforma que você escolher.

 

10. Conversores automáticos de tipos

O Apache Camel tem um mecanismo interno de conversão de tipos que vem com mais de 150 conversores. Você não precisará configurar regras de conversão de tipos para ir de matrizes de bytes para sequências de caracteres, por exemplo.

 

11. Suite para testes

O Apache Camel fornece um Kit de teste que torna mais fácil testar os aplicativos Camel. É usado extensivamente para testar o prórpio Camel. Ele inclui mais de 6.000 testes de unidade.

 

12. Projeto Open Source com uma comunidade ativa

O projeto Apache Camel tem uma comunidade. Para participar acesse: http://camel.apache.org/community.html

 

Para saber mais sobre padrões de integração e como implementa-los com Apache Camel, participe das palestras sobre Arquitetura para Integração de Aplicações em Pangea.

 

 

Exibições: 416

Comentar

Você precisa ser um membro de PanGea para adicionar comentários!

Entrar em PanGea

Comentário de Adriano Tavares em 8 março 2012 às 1:14

Fabiano,

o Service Mix tem um componente ServiceMix EIP para implementação de padrões. Talvez esse seja o ponto de sobreposição, mas não anula totalmente o Camel que agrega recursos para roteamento e mediação.  Na suite da FuseSource tem os dois, o "Fuse ESB" é o ServiceMix e o "Fuse Mediation Router" é o Apache Camel. 

Comentário de Fabiano G. Souza em 7 março 2012 às 9:36

Oi Adriano,

Sim, entendo que ele nao é um ESB, entretanto temos aí alguma sobreposição de recursos. 

Abração!

Comentário de Adriano Tavares em 7 março 2012 às 9:01

Leonardo,

como você fez deploy da aplicação? Você usou o ActiveMQ mesmo?

Comentário de Adriano Tavares em 7 março 2012 às 8:15

Grande Fabiano (Nerdmor),

O Apache Camel não é um ESB então não faz sentido fazer esta comparação com o Jboss ESB ou com o ServiceMix. Você pode utiliza-lo com qualquer um desses dois. Ele é um framework lightweight e pode ser usado de várias formas, conforme citei no item 9.     

Comentário de Fabiano G. Souza em 6 março 2012 às 10:01

Bom artigo! Me parece que o Camel é uma solução mais robusta que o JBoss ESB, não? E como decidir como usa-lo ao invés do Apache ServiceMix? 

Comentário de Leonardo em 5 março 2012 às 23:18
Caro Adriano, recentemente tive a oportunidade de implementar um sistema que processa alguns milhões de transações por dia todo em camel e osgi. Alguns problemas que percebi foram: debug complicado pois o código dele não é trivial, dificuldade em entender rotas muito extensas, muita cópia de objetos as vezes desnecessário e exige que o implementador entenda o que esta fazendo ( e nem todos querem isso, acredite) entre outras. Entretanto depois que você pega o "jeito" a produtividade é gigante ainda mais se combinado com CXF. Em questão de minutos você implementa integrações que antes levava dias. Sensacional
Comentário de Bruno Leite em 5 março 2012 às 22:20

O interessante deste tipo de framework também é a facilidade de implementação, uma vez que implementar os EIP's exige uma certa complexidade e esforço. A parte integrada de teste também é um motivador, uma vez que favorece a integração contínua. Muito bom o post.

Evento TDC2018

Badge

Carregando...

© 2018   Criado por Adriano Tavares.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço