RabbitMQ

★インストール

1.Erlangのインストール

wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo

yum update erlang インストール状況を確認

yum info erlang

yum install erlang

※「Missing Dependency: libwx_gtk2u_xxx」というエラーが出た場合に

補足:EPELのインストールを参照

2.RabbitMQのインストール

wget http://www.rabbitmq.com//releases/rabbitmq-server/v2.8.5/rabbitmq-server-2.8.5-1.noarch.rpm

rpm -ivh rabbitmq-server-2.8.5-1.noarch.rpm

或いは

rpm -ivh http://www.rabbitmq.com//releases/rabbitmq-server/v2.8.5/rabbitmq-server-2.8.5-1.noarch.rpm

補足:EPELのインストール

wget http://mirror.chpc.utah.edu/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

rpm -ivh epel-release-5-4.noarch.rpm

或いは

rpm -ivh http://mirror.chpc.utah.edu/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

※32bitの場合はx86_64ではなく、i386である

★RabbitMQサーバの起動

chkconfig --list | grep rabbitmq-server 起動時の状況

1.サービスを起動

/sbin/service rabbitmq-server stop/start/status/etc.

或いは

/etc/init.d/rabbitmq-server stop/start/status/etc.

2.ポートを開放

vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5672 -j ACCEPT

/sbin/service iptables restart

★Javaクライアントのサンプルコード

Maven依頼

<dependencies>

<dependency>

<groupId>com.rabbitmq</groupId>

<artifactId>amqp-client</artifactId>

<version>2.7.1</version>

</dependency>

</dependencies>

送信側

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

public class Publish {

public static void main(String[] args) {

String QUEUE_NAME = "test";

try {

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(<IPアドレス>);

factory.setPort(5672);

Connection connection = factory.newConnection();

Channel channel = connection.createChannel();

channel.queueDeclare(QUEUE_NAME, false, false, false, null);

String message = "Testing Message!";

channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

System.out.println("Sent:" + message);

channel.close();

connection.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

受信側

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.QueueingConsumer;

public class Consumer {

public static void main(String[] args) {

String QUEUE_NAME = "test";

try {

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(<IPアドレス>);

factory.setPort(5672);

Connection connection = factory.newConnection();

Channel channel = connection.createChannel();

channel.queueDeclare(QUEUE_NAME, false, false, false, null);

System.out.println("Waiting for messages......");

QueueingConsumer consumer = new QueueingConsumer(channel);

channel.basicConsume(QUEUE_NAME, true, consumer);

while (true) {

QueueingConsumer.Delivery delivery = consumer.nextDelivery();

String message = new String(delivery.getBody());

System.out.println("Received:" + message);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}