Spring AMQP 1.0 GA 发布了

  • Bienvenido David
  • 张龙

2012 年 2 月 5 日

话题:Java.NET语言 & 开发

近日,SpringSource(VMware 下的一个部门)发布Spring AMQP 1.0 GA(1.0.0.RELEASE)。Spring AMQP 项目将 Spring 核心概念应用到了基于 AMQP 的消息解决方案的开发上,并且提供了 Java 与.NET 两个版本。要想了解 Spring AMQP 与 AMQP,请阅读文章“Introduction to SpringSource's Advanced Message Queuing Protocol Support”。

Spring AMQP 提供了 org.springframework.amqp.core.AmqpTemplate 来发送与接收消息。AMQP 模板实现支持发送与接收 POJOs 而非 javax.jms.Message 实例。他们还提供了一种方式来自定义用于编排对象的 MessageConverter。Spring 与 JMS 用户会发现 JmsTemplate 与新的 AmqpTemplate 之间的相似性。

下面的代码片段介绍了如何联合使用 Spring AMQP 与 RabbitMQ 处理同步消息。RabbitMQ是 VMware 的产品,并且是官方 Spring AMQP 示例中所用的默认 AMQP 实现。

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:rabbit="http://www.springframework.org/schema/rabbit"
	xsi:schemaLocation="http://www.springframework.org/schema/rabbit
		http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<rabbit:connection-factory id="connectionFactory"/>
	<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"/>
	<rabbit:admin connection-factory="connectionFactory"/>
	<rabbit:queue name="helloworld.queue"/>
</beans>

上述 Spring 配置 xml 引用了 ConnectionFactory,创建了一个 RabbitTemplate 来访问消息 broker,创建了一个 RabbitAdmin 来管理交换、查询与绑定,最后创建了队列。下面的 Java 代码片段用于发送与接收消息。

Producer.java

import org.springframework.amqp.core.AmqpTemplate;
...

AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);
amqpTemplate.convertAndSend("helloworld.queue", "Hello World");


Consumer.java

import org.springframework.amqp.core.AmqpTemplate;
...

AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);
System.out.println(amqpTemplate.receiveAndConvert("helloworld.queue"));

要想上手,请下载Spring AMQP for Java或是Spring AMQP for .NET。Spring AMQP for Java artifacts 也位于 SpringSource Maven 仓库与 Maven Central 中。其依赖是 spring-amqp、spring-core 与 spring-context。如果消息 broker 使用的是 RabbitMQ,那么还要引入 spring-rabbit。你还可以试一下位于 GitHub 上的Spring AMQP 示例。这些示例都是基于 Maven 的项目,需要用到 RabbitMQ 与Erlang。请阅读与示例代码一同发布的 readme.md 文件以了解完整的构建命令。

对于 Cloud Foundry 用户来说,VMware 还发布了 RabbitMQ on Cloud Foundry 免费的公开 Beta 版。你可以使用 AMQP 连接 RabbitMQ on Cloud Foundry,通过这些示例可以帮助你快速上手。对于 Spring Integration 用户来说,版本 2.1 M1 提供了 AMQP 支持。

除了 VMware 的 RabbitMQ 外,其他基于 AMQP 面向消息的中间件还有Apache QpidRed Hat Enterprise MRGStormMQ(托管)。iMatrix 的OpenAMQ已经不再支持了,因此也没有成为一个选择。

要想了解关于 Spring AMQP 的更多信息,请查看Spring AMQP Reference for JavaSpring AMQP Reference for .NET参考页面。

查看英文原文:Spring AMQP 1.0 GA

Java.NET语言 & 开发