2011年11月6日日曜日

groovyとrabbitmqで無条件で複数のキューにメッセージの送信を行う(fanout exchange)

groovyとrabbitmqで無条件で複数のキューにメッセージの送信を行うには(fanout exchangeを使用)、以下のコードを実行します。
@Grab(group='com.rabbitmq', module='amqp-client', version='2.6.1')

import com.rabbitmq.client.*

factory = new ConnectionFactory()
factory.host = "localhost"
connection = factory.newConnection()
channel = connection.createChannel()
// exchangeを作成
exchangeName = "my_fanout_exchange"
channel.exchangeDeclare(exchangeName, "fanout")

// queueを作成&bind
queueName1 = "queue1"
channel.queueDeclare(queueName1,
  true /*= durable */,
  false/*= exclusive*/,
  false /*= autoDelete*/,
  null /*= arguments */)
channel.queueBind(queueName1, exchangeName, "")

queueName2 = "queue2"
channel.queueDeclare(queueName2,
  true /*= durable */,
  false/*= exclusive*/,
  false /*= autoDelete*/,
  null /*= arguments */)
channel.queueBind(queueName2, exchangeName, "")

// メッセージを送信
channel.basicPublish(exchangeName, "", 
  MessageProperties.PERSISTENT_TEXT_PLAIN,
  "fanout exchange サンプルメッセージ".getBytes("UTF-8"))
channel.close()
connection.close()
メッセージを受信するにはgroovyとrabbitmqでメッセージの送信・受信をおこなうの受信プログラムと同様にqueue1, queue2をコマンドライン引数に指定します。
動作環境
groovy 1.8.2, JDK6 Update26, rabbitmq 2.6.1

0 件のコメント:

コメントを投稿