RabbitMQ简介
在学习mq时,首先要先了解什么是消息队列。
《一个故事告诉你什么是消息队列》
RabbitMQ环境搭建
下载地址:http://www.rabbitmq.com/download.html
然后就是next一路点点点,搭建步骤不展示了。
到这,默认guest登录即可。
iead搭建rabbitmq项目
导入rabbitmq依赖。
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
获取mq的连接
public class RabbitTest {
public static Connection getConnection() throws Exception {
//定义连接工厂
ConnectionFactory factory = new ConnectionFactory();
//设置服务地址
factory.setHost("localhost");
//端口
factory.setPort(5672);
//设置账号信息,用户名、密码、vhost
factory.setUsername("test");
factory.setPassword("root");
// 通过工程获取连接
Connection connection = factory.newConnection();
return connection;
}
}
生产者发送消息
public class Send {
private final static String QUEUE_NAME = "q_test_01";
public static void main(String[] args) throws Exception {
// 获取到连接以及mq通道
Connection connection = RabbitTest.getConnection();
// 从连接中创建通道
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();
}
}
这时,查看管理工具队列信息,消息已经入队列。
查看队列信息,getMassage即可获取队列中的消息。
消费者消费队列。
public class Recv {
private final static String QUEUE_NAME = "q_test_01";
public static void main(String[] argv) throws Exception {
// 获取到连接以及mq通道
Connection connection = ConnectionUtil.getConnection();
// 从连接中创建通道
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 + "'");
}
}
}
生产者和消费者概念,请查看文章: 生产者/消费者模式的理解及实现