Qual Integration Framework você deve usar - Integração
Spring, Mule ESB ou Apache Camel? – Parte 2
Mule ESB
Mule ESB é - como o nome sugere - uma ESB completo, incluindo
vários recursos adicionais, em vez de apenas uma estrutura de
integração (você pode compará-lo com Apache ServiceMix que é
um ESB baseado no Apache Camel). No entanto, Mule pode ser
usar estrutura de integração como leve, também - por simplesmente
não adicionar e utilizando todos os recursos adicionais além do
material integração EIP. Como Spring Integration, mula só oferece
uma DSL XML. Pelo menos, é muito mais fácil de ler do que Spring
Integration, na minha opinião. Mule Studio oferece um muito bom e
intuitiva designer visual. Compare o seguinte trecho de código ao
código de integração Primavera de cima. É mais como uma DSL de
Integração da Primavera. Isto é importante se a lógica de integração
é mais complexa.
<flow name=”muleFlow”>
<file:inbound-endpoint path=”incomingOrders”/>
<choice>
<when expression=”payload instanceof com.kw.DvdOrder”
evaluator=”groovy”>
<file:outbound-endpoint
path=”incoming/dvdOrders”/>
</when>
<when expression=”payload instanceof com.kw.DvdOrder”
evaluator=”groovy”>
<jms:outbound-endpoint
queue=”videogameOrdersQueue”/>
</when>
<otherwise>
<logger level=”INFO”/>
</otherwise>
</choice>
</flow>
A principal vantagem da mula é alguns conectores muito
interessante para interfaces proprietárias importantes, tais como
SAP, Tibco Rendevous, o Oracle Siebel CRM, Paypal ou CICS
Transaction Gateway da IBM. Se o seu projeto de integração requer
algum desses conectores, então eu provavelmente escolheria mula!
Uma desvantagem para alguns projetos pode ser que Mule diz não
a OSGi: http://blogs.mulesoft.org/osgi-no-thanks/
Apache Camel
Apache Camel é quase idêntico ao Mule. Ele oferece muitos, muitos
componentes (ainda mais do que Mule) por quase toda a tecnologia
que você poderia pensar. Se não houver nenhum componente
disponível, você pode criar seu próprio componente muito
facilmente começar com um arquétipo Maven! Se você é um cara
Spring: Camel tem integração impressionante Spring, também.
Como os outros dois, que oferece uma DSL XML:
<route>
<from uri=”file:incomingOrders”/>
<choice>
<when>
<simple>${in.header.type} is ‘com.kw.DvdOrder’</simple>
<to uri=”file:incoming/dvdOrders”/>
</when>
<when>
<simple>${in.header.type} is ‘com.kw.VideogameOrder’
</simple>
<to uri=”jms:videogameOrdersQueue”/>
</when>
<otherwise>
<to uri=”log:OtherOrders”/>
</otherwise>
</choice>
</route>
Legibilidade é melhor do que Spring Integration e quase idêntica à
mula. Além disso, um muito bom (mas comercial) designer visual
chamado Fuse IDE está disponível por FuseSource - gerando o
código DSL XML. No entanto, é um monte de XML, não importa se
você usar um designer visual ou apenas o seu editor de XML.
Pessoalmente, eu não gosto disso.
Portanto, vamos mostrar-lhe outra característica impressionante:
Apache Camel também oferece DSLs para Java, Groovy e Scala.
Você não tem que escrever tanto XML feio. Pessoalmente, eu
prefiro utilizar um destes DSLs fluentes em vez de XML para a
lógica de integração. Eu só faço coisas de configuração, tais como
fábricas de conexão JMS ou propriedades JDBC usando XML. Aqui
você pode ver o mesmo exemplo usando um trecho de código DSL
Java:
from(“file:incomingOrders “)
.choice()
.when(body().isInstanceOf(com.kw.DvdOrder.class))
.to(“file:incoming/dvdOrders”)
.when(body().isInstanceOf(com.kw.VideogameOrder.class
))
.to(“jms:videogameOrdersQueue “)
.otherwise()
.to(“mock:OtherOrders “);
As DSLs programação fluentes são muito fácil de ler (mesmo em
exemplos mais complexos). Além disso, esses DSLs de
programação têm um melhor suporte IDE do que XML (conclusão
de código, refatoração, etc.). Devido a esses DSLs fluentes
impressionante, eu sempre usar o Apache Camel, se eu não
preciso de alguns dos excelentes conectores de mula para produtos
proprietários. Devido à sua muito boa integração com Spring, eu até
prefiro Apache Camel para Integração da Primavera, na maioria dos
casos de uso.
Pela maneira: Talend oferece um designer visual gerar o código
Java DSL, mas ele gera um monte de código clichê e não permitir a
edição vice-versa (ou seja, você não pode editar o código gerado).
Este é um critério de no-go e tem de ser corrigido em breve
(espero)!
E o vencedor é…
... Todos os três quadros de integração, porque todos eles são
leves e fáceis de usar - mesmo para projetos de integração
complexos. É impressionante a integrar várias tecnologias
diferentes, usando sempre a mesma sintaxe e conceitos - incluindo
suporte muito bom teste.
O meu favorito é Apache Camel devido às suas impressionantes
DSLs Java, Groovy e Scala, combinados com muitas tecnologias
suportadas. Eu só iria usar Mule se eu precisar de alguns de seus
conectores originais para produtos proprietários. Eu só iria usar
Spring Integration em um projeto de Primavera existente e se eu só
precisa integrar "tecnologias básicas", como FTP ou JMS. No
entanto: Não importa qual desses quadros de integração leves que
você escolher, você vai se divertir muito na realização de projectos
de integração complexos facilmente com esforços baixos. Lembre-
se: Muitas vezes, um ESB gordura tem muita funcionalidade e,
portanto, muito, complexidade desnecessária e esforços. Use a
ferramenta certa para o trabalho certo!

Qual integration framework você deve usar parte 2

  • 1.
    Qual Integration Frameworkvocê deve usar - Integração Spring, Mule ESB ou Apache Camel? – Parte 2 Mule ESB Mule ESB é - como o nome sugere - uma ESB completo, incluindo vários recursos adicionais, em vez de apenas uma estrutura de integração (você pode compará-lo com Apache ServiceMix que é um ESB baseado no Apache Camel). No entanto, Mule pode ser usar estrutura de integração como leve, também - por simplesmente não adicionar e utilizando todos os recursos adicionais além do material integração EIP. Como Spring Integration, mula só oferece uma DSL XML. Pelo menos, é muito mais fácil de ler do que Spring Integration, na minha opinião. Mule Studio oferece um muito bom e intuitiva designer visual. Compare o seguinte trecho de código ao código de integração Primavera de cima. É mais como uma DSL de Integração da Primavera. Isto é importante se a lógica de integração é mais complexa. <flow name=”muleFlow”> <file:inbound-endpoint path=”incomingOrders”/> <choice> <when expression=”payload instanceof com.kw.DvdOrder” evaluator=”groovy”> <file:outbound-endpoint path=”incoming/dvdOrders”/> </when> <when expression=”payload instanceof com.kw.DvdOrder” evaluator=”groovy”> <jms:outbound-endpoint queue=”videogameOrdersQueue”/> </when> <otherwise> <logger level=”INFO”/>
  • 2.
    </otherwise> </choice> </flow> A principal vantagemda mula é alguns conectores muito interessante para interfaces proprietárias importantes, tais como SAP, Tibco Rendevous, o Oracle Siebel CRM, Paypal ou CICS Transaction Gateway da IBM. Se o seu projeto de integração requer algum desses conectores, então eu provavelmente escolheria mula! Uma desvantagem para alguns projetos pode ser que Mule diz não a OSGi: http://blogs.mulesoft.org/osgi-no-thanks/ Apache Camel Apache Camel é quase idêntico ao Mule. Ele oferece muitos, muitos componentes (ainda mais do que Mule) por quase toda a tecnologia que você poderia pensar. Se não houver nenhum componente disponível, você pode criar seu próprio componente muito facilmente começar com um arquétipo Maven! Se você é um cara Spring: Camel tem integração impressionante Spring, também. Como os outros dois, que oferece uma DSL XML: <route> <from uri=”file:incomingOrders”/> <choice> <when> <simple>${in.header.type} is ‘com.kw.DvdOrder’</simple> <to uri=”file:incoming/dvdOrders”/> </when> <when> <simple>${in.header.type} is ‘com.kw.VideogameOrder’ </simple> <to uri=”jms:videogameOrdersQueue”/>
  • 3.
    </when> <otherwise> <to uri=”log:OtherOrders”/> </otherwise> </choice> </route> Legibilidade émelhor do que Spring Integration e quase idêntica à mula. Além disso, um muito bom (mas comercial) designer visual chamado Fuse IDE está disponível por FuseSource - gerando o código DSL XML. No entanto, é um monte de XML, não importa se você usar um designer visual ou apenas o seu editor de XML. Pessoalmente, eu não gosto disso. Portanto, vamos mostrar-lhe outra característica impressionante: Apache Camel também oferece DSLs para Java, Groovy e Scala. Você não tem que escrever tanto XML feio. Pessoalmente, eu prefiro utilizar um destes DSLs fluentes em vez de XML para a lógica de integração. Eu só faço coisas de configuração, tais como fábricas de conexão JMS ou propriedades JDBC usando XML. Aqui você pode ver o mesmo exemplo usando um trecho de código DSL Java: from(“file:incomingOrders “) .choice() .when(body().isInstanceOf(com.kw.DvdOrder.class)) .to(“file:incoming/dvdOrders”) .when(body().isInstanceOf(com.kw.VideogameOrder.class )) .to(“jms:videogameOrdersQueue “) .otherwise() .to(“mock:OtherOrders “);
  • 4.
    As DSLs programaçãofluentes são muito fácil de ler (mesmo em exemplos mais complexos). Além disso, esses DSLs de programação têm um melhor suporte IDE do que XML (conclusão de código, refatoração, etc.). Devido a esses DSLs fluentes impressionante, eu sempre usar o Apache Camel, se eu não preciso de alguns dos excelentes conectores de mula para produtos proprietários. Devido à sua muito boa integração com Spring, eu até prefiro Apache Camel para Integração da Primavera, na maioria dos casos de uso. Pela maneira: Talend oferece um designer visual gerar o código Java DSL, mas ele gera um monte de código clichê e não permitir a edição vice-versa (ou seja, você não pode editar o código gerado). Este é um critério de no-go e tem de ser corrigido em breve (espero)! E o vencedor é… ... Todos os três quadros de integração, porque todos eles são leves e fáceis de usar - mesmo para projetos de integração complexos. É impressionante a integrar várias tecnologias diferentes, usando sempre a mesma sintaxe e conceitos - incluindo suporte muito bom teste. O meu favorito é Apache Camel devido às suas impressionantes DSLs Java, Groovy e Scala, combinados com muitas tecnologias suportadas. Eu só iria usar Mule se eu precisar de alguns de seus conectores originais para produtos proprietários. Eu só iria usar Spring Integration em um projeto de Primavera existente e se eu só precisa integrar "tecnologias básicas", como FTP ou JMS. No entanto: Não importa qual desses quadros de integração leves que você escolher, você vai se divertir muito na realização de projectos de integração complexos facilmente com esforços baixos. Lembre- se: Muitas vezes, um ESB gordura tem muita funcionalidade e, portanto, muito, complexidade desnecessária e esforços. Use a ferramenta certa para o trabalho certo!