Enterprise Application Integration 企业应用集成(EAI)
企业应用集成是必要的,几乎每家公司都有很多新产品及应用,如何集成这些应用程序是一个问题。来每十年诞生一个新范式,例如客户端/服务器通信,面向服务的架构(SOA)或云计算。
此外,不同的接口或协议和技术的出现。过去数据存储在文件,SQL数据库在今天很通用。有时,还需要NoSQL数据库。同步远程过程调用RPC或异步消息是通过如RMI,SOAP的Web服务,REST或JMS进行通信的。很多软件筒仓还存在。
Enterprise Integration Patterns 企业集成模式(EIP)
当然,你可以推倒重来,然后再写一些意大利面条代码,让应用程序协同工作。不幸的是,你的管理者不会喜欢这个缺少长远眼光的解决方案。
企业集成模式(www.eaipatterns.com)帮助碎片的问题,并使用标准化的方法来集成应用程序。使用相同的概念路由消息来改造。因此,每次有问题时重新发明轮子不是个好主意。
集成的替代方案
解决方案1 :自定义解决方案
实现一个单独的解决方案,适用于您的问题还没有分离切成碎片。此工程可能是最快的替代的小型用例。你必须自己编写所有。维护成本可能会高,特别是如果团队成员改变。
解决方案2:集成框架
使用这类框架有助于将多个集成模式集成在一个标准化的方式。它减少了损耗。每个开发人员会很容易明白你做了什么(如果他知道所使用的架构) 。
解决方案3:企业服务总线(ESB )
应用企业服务总线在您的应用程序集成中。ESB还有更多的功能,如业务流程管理,注册表或业务活动监控。通常,您可以在图形用户界面配置路由实现这些功能 - 通常情况下,一个ESB是一个复杂的产品。学习曲线要高得多。但是提供您一个非常强大的工具。
Apache Camel是什么?
Apache Camel是一个轻量级的集成框架,它实现了所有EIP。因此,您可以使用EIP所需的图案容易地集成不同的应用。您可以使用Java,Spring的XML,scala或Groovy。几乎每一个技术,你可以想像是可用的,例如HTTP,FTP,JMS,EJB,JPA,RMI,JMS,JMX,LDAP的Netty,和很多很多(当然大多数ESB还提供了对他们的支持)。此外,自定义的组件可以很容易地被创建。
您可以部署Apache的骆驼作为独立的应用程序,在Web容器(如Tomcat或Jetty),在JEE应用服务器(如JBoss应用服务器或WebSphere AS),在OSGi环境或与Spring容器组合。
什么时候使用Camel
如果你想多个应用程序使用不同的协议和技术集成,Apache Camel是真棒。除了支持如此多的技术和除了支持不同的编程语言,每个集成使用EIP下的相同概念!无论您使用何种协议。无论您使用什么技术。无论您使用何种领域特定语言( DSL) - 它可以通过Java , Scala, Groovy的或Spring的XML 。做同样的方式。永远!(有一个生产者,消费者,端点endpoint,有EIP概念,有定制处理器参数(如凭据) 。
比如使用Java DSL表达如下:
from(„activeMQ:orderQueue“)..transaction().log(„processing order“).to(mock:“notYetExistingInterface“)
使用Scala DSL:
„file:incomingOrders?noop=true“ process(new TransformationProcessor) to „jdbc:orderDatastore“
如果你是一个开发者,应该能看懂这些意思。
另外两个非常重要的特点是对错误处理(例如使用死信队列)和自动测试的支持。
什么时候不使用Camel
在自己的定制集成,集成框架,企业服务总线这三种方案中不使用Camel,难易程度如下:
如果你要整合一个或两个技术,如读取某个文件或发送JMS消息,使用一些众所周知的库可能是更容易和更快,如Apache Commons IO或Spring JmsTemplate的。但是,请不要总是使用这些helper类,纯文件或try-catch捕捉代码错误的JMS集成是SOOOO难看的!
FuseSource虽然提供商业支持,我不会使用Apache骆驼在非常大的集成项目中。 ESB是在大多数情况下,正确的工具选择。它提供了许多额外的功能,如BPM或BAM 。当然,你也可以使用多个单框架或产品和“创造”自己的ESB ,但是这是在浪费时间和金钱(在我看来) 。
通常情况下,开放源代码解决方案相比商业产品如WebSphere Message Broker更轻量级(你安装此产品的试用版可能需要一两天) !著名的开源ESB有Apache的ServiceMix的,骡子ESB和WSO2 ESB 。顺便说一句:你知道基于Apache Camel框架基础上一些ESB?(如Apache的服务组合和Talend ESB) 。因此,如果你喜欢Apache的骆驼,你也可以使用Apache ServiceMix这样的ESB。