Rabbit是一个在AMQP协议标准基础上完善的,可用于企业消息系统。他遵循Mozilla Public License开源协议。
采用Erlang实现的工业级的消息队列(消息)服务器。官网地址:点击打开链接
1、下载安装
由于采用Erlang服务器,所以首先要去下载:http://www.erlang.org/download.html ,下载即可,注意自己系统
版本,由于我系统是64位,所有下载了:otp_win64_19.1.exe 并安装。
2、配置环境变量
在本系统环境变量中增加一个变量:ERLANG_HOME ,配置为:E:\RabbitMQ\erl8.1
3、下载RabbitMQ
本机测试下载了2.8.1,即:点击打开链接
4、解压安装
解压后,找到sbin目录,运行其中的rabbitmq-server.bat,启动RabbitMQ服务器。由于RabbitMQ是用AMQP协议,
而客户端支持多种语言(Java、.net、C/C++,Erlang.....)。下面,我用java来写一个Hello World,来测试RabbitMQ
安装是否success。
5、下载RabbitMQ版的java客户端
下载地址: 点击打开链接。本机是rabbitmq-java-client-bin-3.6.5,解压后将里面的jar 包copy到我们的java工程中。
6、写代码
项目结构:
Receive.java
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;
public class Receive {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException,
InterruptedException {
try {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection;
connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
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 + "'");
}
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}
Send.java
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException {
try{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection;
connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "cao 没有";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}catch (TimeoutException e){
e.printStackTrace();
}
}
}
7、测试
先运行Receive,再运行Send两次,看看消费者是否接受到了2条消息,表明RabbitMQ的环境success。
8、RabbitMQ自带监控
1. cmd进入sbin目录,输入rabbitmq-plugins enable rabbitmq_management 启动监控管理,然后
重启RabbitMQ服务。
2. 浏览器打开:http://localhost:55672,用户名和密码都是guest。
3. 关掉Receive,再次运行Send,然后点击管理页面的Queue。
点击hello进入,并点击Get Message,可以看到Hello World信息的确已经传到RabbitMQ服务了。
java测试代码: