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