1. Qual Integration Framework você deve usar - Integração
Spring, Mule ESB ou Apache Camel? – Parte 1
Trocas de dados entre empresas estão aumentando muito. O
número de aplicações que devem ser integrados está aumentando
também. As interfaces usam diferentes tecnologias, protocolos e
formatos de dados. No entanto, a integração destas aplicações
devem ser modeladas de forma padronizada, realizado de forma
eficiente e apoiada por testes automáticos.
Três quadros de integração estão disponíveis no ambiente de JVM,
que preenchem estes requisitos: Integração Spring, Mule ESB e
Apache Camel. Eles implementar as Integration Patterns Enteprise
bem conhecidas (EIP, http://www.eaipatterns.com) e, portanto,
oferecem uma linguagem padronizada, de domínio específico para
integrar aplicações.
Estes quadros de integração pode ser usado em quase todos os
projetos de integração dentro do ambiente de JVM - não importa
quais tecnologias, protocolos de transporte ou formatos de dados
são usados. Todos os projetos de integração pode ser realizado de
uma forma consistente, sem código clichê redundante.
Este artigo compara as três alternativas e discute os seus prós e
contras. Se você quer saber, quando usar um mais poderoso
Enterprise Service Bus (ESB) em vez de um desses quadros de
integração leves, então você deve ler este post: http://www.kai-
waehner.de/blog/2011 / 06/02 / quando de usar-apache-camelo /
(ele explica quando usar o Apache Camel, mas o título também
poderia ser "quando usar um framework de integração leve").
Critérios de comparação
Vários critérios podem ser usadas para comparar estas três
quadros de integração:
• Código aberto
• Conceitos básicos / Arquitectura
• Testability
• implantação
• popularidade
2. • Suporte comercial
• IDE-Support
• ErrorHandling
• Monitoramento
• prontidão Empresa
• linguagem específica de domínio (DSL)
• Número de componentes para interfaces, tecnologias e protocolos
• Expansibilidade
Semelhanças
Todos os três quadros têm muitas semelhanças. Portanto, muitos
dos critérios de comparação acima são mesmo! Todos implementar
as PEI e oferecer um modelo e mensagens de arquitetura
consistente para integrar várias tecnologias. Não importa quais
tecnologias você tem que usar, você sempre fazê-lo da mesma
forma, ou seja, mesma sintaxe, mesmo API, mesmos testes
automáticos. A única diferença é a configuração de cada ponto final
(por exemplo JMS precisa de um nome de fila, enquanto JDBC
precisa de uma URL de conexão com banco de dados). IMO, esta é
a característica mais importante. Cada estrutura usa nomes
diferentes, mas a idéia é a mesma. Por exemplo, "Camel rotas" são
equivalentes a "mula flui", "componentes Camel" são chamados de
"adaptadores" em Spring Integration.
Além disso, várias outras semelhanças existe, que diferem de ESB
pesados. Você apenas tem que adicionar algumas bibliotecas ao
seu classpath. Portanto, você pode usar cada quadro em todo o
ambiente JVM. Não importa se o seu projeto é um aplicativo
independente Java SE, ou se você quer implantá-lo em um
recipiente web (por exemplo, Tomcat), servidor de aplicação JEE
(por exemplo Glassfish), container OSGi ou mesmo para a nuvem.
Basta adicionar as bibliotecas, fazer algumas configurações
simples, e está feito. Então você pode começar a implementar o seu
material de integração (roteamento, transformação, e assim por
diante).
3. Todos os três quadros são de código aberto e oferecem
características familiares, públicos, como código-fonte, fóruns, listas
de discussão, acompanhamento de problemas e votação para
novos recursos. Boas comunidades escrever documentação, blogs
e tutoriais (IMO Apache Camel tem a comunidade mais perceptível).
Apenas o número de livros lançados poderia ser melhor para todos
os três. suporte comercial está disponível através de diferentes
fornecedores:
• Integração Spring: SpringSource (http://www.springsource.com)
• Mule ESB: MuleSoft (http://www.mulesoft.org)
• Apache Camel: FuseSource (http://fusesource.com) e Talend
(http://www.talend.com)
Suporte IDE é muito bom, mesmo designers visuais estão
disponíveis para todas as três alternativas para modelar problemas
de integração (e deixá-los gerar o código). Cada um dos quadros é
uma empresa pronta, porque todos oferecem recursos necessários,
tais como manipulação de erro, o teste automático, transações,
multithreading, escalabilidade e monitoramento.
Diferenças
Se você conhece um destes quadros, você pode aprender os outros
muito facilmente devido aos seus mesmos conceitos e muitas
outras semelhanças. Em seguida, vamos discutir suas diferenças
para ser capaz de decidir quando usar cada um. As duas diferenças
mais importantes são o número de tecnologias suportadas e a DSL
(s) utilizado. Assim, vou concentrar-me especialmente sobre estes
dois critérios a seguir. Vou usar trechos de código de execução da
bem conhecida EIP "Router com base em conteúdo" em todos os
exemplos. Julgue por si mesmo, qual você prefere.
Spring Integration
Primavera Integração é baseado no projeto Spring bem conhecido e
estende o modelo de programação com suporte de integração.
Você pode usar recursos de Primavera, como injeção de
dependência, as transações ou a segurança como você faz em
outros projetos da Primavera.
Primavera A integração é impressionante, se você já tem um projeto
de Primavera e precisa adicionar algumas coisas integração. É
quase nenhum esforço para aprender Spring Integration se você
4. sabe-se da Primavera. No entanto, Primavera Integration só oferece
apoio muito rudimenary para as tecnologias - apenas "coisas
básicas" como Arquivo, FTP, JMS, TCP, HTTP ou Web Services.
Mula e Apache Camel oferecer muitos, muitos outros componentes!
Integrações são implementadas por escrever um monte de código
XML (sem DSL real), como você pode ver no seguinte trecho de
código:
<file:inbound-channel-adapter
id=”incomingOrders”
directory=”file:incomingOrders”/>
<payload-type-router input-channel=”incomingOrders”>
<mapping type=”com.kw.DvdOrder” channel=”dvdOrders” />
<mapping type=”com.kw.VideogameOrder”
channel=”videogameOrders” />
<mapping type=”com.kw.OtherOrder” channel=”otherOrders”
/>
</payload-type-router>
<file:outbound-channel-adapter
id=”dvdOrders”
directory=”dvdOrders”/>
<jms:outbound-channel-adapter
id=”videogamesOrders”
destination=”videogameOrdersQueue”
channel=”videogamesOrders”/>
5. <logging-channel-adapter id=”otherOrders” level=”INFO”/>
Você também pode usar o código Java e anotações para algumas
coisas, mas no final, você precisa de um monte de XML.
Honestamente, eu não gosto muito de declaração XML. É bom para
configuração (como fábricas de conexão JMS), mas não para a
lógica de integração complexa. Pelo menos, ele deve ser um DSL
com melhor legibilidade, mas mais complexos exemplos Primavera
de integração são realmente difíceis de ler.
Além disso, o designer visual para o Eclipse (chamado gráfico de
integração) é ok, mas não tão bom e intuitivo que os seus
concorrentes. Portanto, eu só iria usar Spring Integration se eu já
tenho um projeto Spring existente e deve apenas adicionar um
pouco de lógica de integração exigindo apenas "tecnologias
básicas", como Arquivo, FTP, JMS ou JDBC.