kyle00 2010-03-09
下载地址:http://www.opencredo.com/technologies/opencredo-amq
http://www.infoq.com/cn/news/2010/03/amqp_support_spring_integration
OpenCredo是一家咨询公司,由JonasPartner和RussMiles创建,近日发布了一个开源的适配器——可以让SpringIntegration应用与AMQP端点协同工作。
AdvancedMessageQueuingProtocol(AMQP)是个平台中立的规范,描述了面向客户的消息中间件,作为一个线级协议(wire-level,该协议是对以八进制数据流在网络上进行传输的数据格式的描述——译者注),它并没有规定API的实现细节。大家可以将其看作是适合于异步消息的特定协议。任何客户端都可以实现它,包括JMSAPI。
RabbitMQ是个面向消息的中间件(MOM)产品,使用Erlang开发,因此能够充分利用Erlang语言优秀的线程和多核能力,可以无缝地将单VM上的并发代码转换为跨越多个物理节点的分布式应用。RabbitMQ并没有提供JMS客户端,但却提供了AMQP客户端。RabbitMQ并不是唯一一个考虑到可伸缩性而使用Erlang进行开发的中间件产品,ejbabberd(XMPP远程消息服务器)、CouchDB(文档数据库)以及Amazon的SimpleDB(分布式数据库)都是使用Erlang进行开发的。
虽然JMS是Java客户端与消息中间件进行互联的标准机制,使用也非常广泛,但它却并非是唯一之选。AMQP也为Java用户提供了优秀的消息解决方案。OpenCredo的声明——集成AMQP与SpringIntegration框架——阐明了如何通过Spring框架将基于AMQP的消息系统引入到企业当中。
SpringIntegration构建在Spring框架之上,提供了面向消息的解决方案,非常类似于ESB;它提供的适配器可以让代码响应外部系统事件,这与EJB中的MessageDrivenBean或是Spring中的MessageDrivenPOJO非常像。OpenCredo框架的目标在于为各种不同的本地JavaAMQP客户端提供一致的使用方式,同时将其挂接(hook)到SpringIntegration总线上。目前,该支持包装了RabbitMQAMQPJava客户端并通过SpringIntegration创建了一个间接层以将逻辑与消息系统进行解耦。重要的是,AMQP是个开放、线级协议,这样一个客户端就能与多个厂商协同工作,而JMS客户端则只能绑定到固定版本的JMS服务器上。
OpenCredo与RabbitMQCEOAlexisRichardson和RabbitMQ团队通力合作实现了该支持并计划对其进行不断升级。其任务列表中还准备提供对事件驱动(与基于轮询的方式相反)客户端的支持以及为客户端提供声明式的Spring事务管理支持。最近OpenCredo宣布联合SpringIntegration以提供对Esper(一个ComplexEventProcessing方案)的支持。OpenCredo通过与简单、以POJO为中心的SpringIntegration的联手合作,为Esper的支持提供了强大的消息与监控能力。