VMwareの一部門であるSpringSourceが 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"(SpringSource の Advanced Message Queuing Protocol サポートの入門)を読むとよい。
Spring AMQPは、メッセージの送信と受信に org.springframework.amqp.core.AmqpTemplateを提供している。 AMQP templateの実装は、 javax.jms.Messageインスタンスではなく、POJOの送受信をサポートする。また Objectのマーシャリングに使われる MessageConverterをカスタマイズする方法も提供する。 Spring + JMSのユーザーは、 JmsTemplate と新しい AmqpTemplate間の類似性に気がつくだろう。
以下のコード片は、 RabbitMQと一緒にSpring AMQPを使って、背後でどのように同期メッセージングが動くのかを示している。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を生成し、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モジュールは、 SpringSource Mavenリポジトリと Maven Centralからも入手できる。依存関係は、spring-amqp, spring-core, spring-context である。もしメッセージブローカーとしてRabbitMQ を使っているなら、spring-rabbit を含まなければならない。 GitHubから入手できる Spring AMQP 例 を試すこともできる。これらの例は、 Mavenベースのプロジェクトであり、 RabbitMQと Erlang が要る。完全なビルド手順がサンプルコードについている readme.mdファイルに書かれている。
Cloud Foundryユーザーへ、 VMwareは、Cloud Foundry上で動くRabbitMQ の無料公開ベータ版を アナウンスした 。 Cloud Foundry上のRabbitMQに接続するために Spring AMQPを使うことができる。 例 が直ぐ始めるのに役に立つ。Spring Integration ユーザーには、AMQPサポートは、バージョン 2.1 M1で始まる。
VMwareの RabbitMQの他に、 AMQPベースのメッセージ指向ミドルウェアには、Apache Qpid、Red Hat Enterprise MRG、StormMQ (ホストされる)がある。iMatrixの OpenAMQ は、もはやサポートされないので、代替ではない。
Spring AMQPに関する更なる情報は、Spring AMQP Reference for Java と Spring AMQP Reference for .NET のリファレンスページを見て欲しい。