近期的重点还是进一步对开源ESB和相关组件产品进行研究,简单总结如下:
对于开源Talend ESB前面已经有文章介绍到是一款相当优秀的ESB集成产品套件,由于Talend本身是以做ETL起家的,因此产品对数据库和大数据的集成能力相当强。对于Talend ESB的测试,近期重点是做了在Mediation模式下对Camel流程设计的测试,整体功能基本能满足使用要求,但是相当对于直接使用Camel本身存在一定程度的封闭性。
由于使用了routines.system.api这个talend自己的包,因此talend导出的kar包部署到servicemix是无法运行的。尝试单独建立了一个elicpse工程导入相关的代码和routines.system.api包相关的java源代码文件。虽然能够maven编译通过,但是通过bundle:install安装到servicemix仍然无法运行。
对于camel组件的可视化设计,在talend里面没有使用类似blueprint和spring xml这种配置文件,而是talend自己的一种配置文件格式,这个可以在{routinename}.item中查看到具体的配置内容。即talend整个思路是首先将图形化配置内容存到该配置文件,然后再通过配置文件读取动态的生成java代码文件。在部署的时候将java代码进行动态的打包编译并部署运行。
如果要借用talend的camel设计器,则可以自己来实现对.item文件的读取,然后生成相应的java代码文件,即通过自己实现的代码来实现talend设计器和camel引擎之间的中转。以解决当前camel的可视化设计问题。
Talend ESB本身的Server端可以看到仍然集成了karaf,camel,cxf,ActiveMQ等,可以看到该Server端实际是包含了开源ServiceMix的所有内容的,只是更加强大。
对于Camel可以说是一款实现企业EIP集成各种场景的基于规则的优秀集成中间件产品,可以看到对于Servicemix和Fuse都是基于Camel来实现,同时Talend本身也包含了Camel组件设计和所有功能的融入。而对于Mule则是较为独立的一套设计方法和引擎。
对于Camel近期主要做了一些例子的验证和测试,主要还是围绕CXF的Web Service和DB集成能力进行。对于CXF本身的集成要实现一个Proxy代理服务相对来说还是相对简单的,最简单的代理完全可以通过blueprint的xml配置文件就可以实现,而对于负责的我们则可以自己实现相应的bean,在java代码里面进行规则处理和逻辑转换。当然对于简单的转换也完全可以通过xpath语句进行即可。
对于DB数据库的集成,对jdbc数据集成模式进行了测试。但是对于CXF+DB的集成还没有展开相应的测试。对于DB在Camel里面跑通的例子,当我们部署到servicemix里面的时候运行仍然存在问题,当前还没有找到具体的原因。及时jar包所依赖的所有包都通过bundle:install安装完毕,但是在服务jar包部署完成并启动的时候仍然会有一些报错问题无法解决,估计还是配置文件或jar包本身版本的原因。这个也导致一个问题,即如何将在camel里面调测通过的内容快速的部署到karaf的osgi环境里面,当前没有找到具体的快速方法。
基于Camel来实现和定制ESB服务总线是一个可行的线路,毕竟Camel在底层已经有了完善的支撑。重点主要还是缺两方面的能力,一个是可视化的camel组件设计和编排,一个是管控和治理平台。如果按这个思路进行做,可以先完善Camel引擎,包括日志,安全,流控等方面的内容,同时增加管控平台。其次再来考虑设计器的研发,前期可替代方案即是先使用talend或fuse的设计器,对于设计完成的内容再转到camel里面去运行。
Jboss Fuse ESB
在本周完成对Fuse集成开发环境的初步安装。前面已经谈到过在Redhat收购了jboss后,对于Jboss ESB和原有的Fuse Servicework,包括Switchyard等产品都做了较大幅度的改变。所有内容都全部迁移到了Jboss fuse里面。对于Fuse的安装首先要安装Jboss Developer Editon,然后再安装相应的Fuse插件即可。
对于Fuse集成开发环境上对Camel的设计,可以直接映射到具体的blueprint或spring xml文件上。即该设计器是完全遵循Camel设计和配置文件标准的。那么如果希望找寻camel设计器的替代方案采用Fuse集成开发环境是一个不错的选择。
经过对Fuse的简单使用,可以看到Fuse设计器对Camel组件本身的动态配置和获取等能力相对还是比较弱,很多内容仍然还是需要手工填写和完善。举个简单的例子来说,当我们对一个CXF组件配置为获取远程的WSDL地址时候,在Talend里面是可以动态完成对SericeName,Portname等参数信息的填写,但是在Fuse里面这些信息仍然需要我们手工填写。
对于Fuse当前红帽更多推的是企业版本,也可以将Fuse看做在ServiceMix上增加了设计器和管控治理能力的一个完整企业ESB服务总线产品。个人整体感觉而言虽然Fuse完整的集成了Camel,但是在服务和接口的集成和实现中,易用性仍然不如Talend ESB产品。