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();
}
}
}