软件下载
首先去官网下载最新版本:http://www.rabbitmq.com/download.html
我下载的是:rabbitmq-server-3.6.9-1.el6.noarch.rpm版本。
还需要其他的一些依赖包需要安装:
erlang-18.1-1.el6.x86_64.rpm
rabbitmq官网上下载到合适的RPM包,http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm。
安装
使用如下命令安装
<pre>
rpm -ihv erlang-18.1-1.el6.x86_64.rpm
rpm -ihv rabbitmq-server-3.6.9-1.el6.noarch.rpm
</pre>
缺省配置启动
<pre>
/sbin/service rabbitmq-server start
Starting rabbitmq-server: SUCCESS
</pre>
说明
如果启动报这个错误:epmd error for host “demo”: timeout ,那么只需要修改一下hosts文件,增加你的主机名,注意,比如你的主机叫 demo.woplus,在hosts中配了 127.0.0.1 demo.woplus 也不行,你需要在hosts中再加一个 127.0.0.1 demo。
配置管理台
第一件事要创建用户,因为缺省的guest/guest用户只能在本地登录,所以先用命令行创建一个admin/admin123,并让他成为管理员。
<pre>
./rabbitmqctl add_user admin admin123
./rabbitmqctl set_user_tags admin administrator
</pre>
启动管理台
<pre>
./rabbitmq-plugins enable rabbitmq_management
</pre>
现在可以登录到管理台了
创建一个mqtest用户,用于后面Java Client使用。
Java Client
我用Maven新建一个工程,修改POM文件,增加如下:
<pre>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.6</version>
</dependency>
</dependencies>
</pre>
编写Sender类
<pre>
package com.zhanghf;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Sender {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("mqtest");
factory.setPassword("mqtest");
factory.setHost("172.16.0.153");
factory.setVirtualHost("/");
factory.setPort(5672);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}
}
</pre>
执行结果如下:
[x] Sent 'Hello World!'
再编写Consumer类
<pre>
package com.zhanghf;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
public class Consumer {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("mqtest");
factory.setPassword("mqtest");
factory.setHost("172.16.0.153");
factory.setVirtualHost("/");
factory.setPort(5672);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
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(" [x] Received '" + message + "'");
}
}
}
</pre>
执行结果如下:
[x] Received 'Hello World!'
网友评论