本文基于慕课网-阿神老师的课程-RocketMQ核心技术精讲与高并发抗压实战,仅作为个人的学习
记录
使用idea快速创建一个spring boot项目,在pom文件中添加amqp-client jar包依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
1.创建Constant类用于存储RocketMQ 的IP、端口、用户名、密码等关键信息
public class Constant {
public static String HOST = "192.168.193.128";
public static int PORT = 5672;
public static String USERNAME = "root";
public static String USERPASS = "root";
}
2.编写Produce生产者类
package com.star.movie.quickstart;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.star.movie.common.Constant;
/**
* @Description:生产者demo
* @author:kaili
* @Date: 2019-04-21 22:11
**/
public class Producer {
public static void main(String[] args) throws Exception {
//1 创建一个ConnectionFactory, 并进行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(Constant.HOST);
connectionFactory.setPort(Constant.PORT);
connectionFactory.setUsername(Constant.USERNAME);
connectionFactory.setPassword(Constant.USERPASS);
connectionFactory.setVirtualHost("/");
//2 通过连接工厂创建连接
Connection connection = connectionFactory.newConnection();
//3 通过connection创建一个Channel
Channel channel = connection.createChannel();
//4 通过Channel发送数据
for(int i=0; i < 5; i++){
String msg = "Hello RabbitMQ!";
//1 exchange 2 routingKey
channel.basicPublish("", "test001", null, msg.getBytes());
}
//5 记得要关闭相关的连接
channel.close();
connection.close();
}
}
3.编写消费者类
package com.star.movie.quickstart;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.star.movie.common.Constant;
/**
* @Description:消费者demo
* @author:kaili
* @Date: 2019-04-21 22:10
**/
public class Consumer {
public static void main(String[] args) throws Exception {
//1 创建一个ConnectionFactory, 并进行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(Constant.HOST);
connectionFactory.setPort(Constant.PORT);
connectionFactory.setVirtualHost("/");
connectionFactory.setUsername(Constant.USERNAME);
connectionFactory.setPassword(Constant.USERPASS);
//2 通过连接工厂创建连接
Connection connection = connectionFactory.newConnection();
//3 通过connection创建一个Channel
Channel channel = connection.createChannel();
//4 声明(创建)一个队列
String queueName = "test001";
channel.queueDeclare(queueName, true, false, false, null);
//5 创建消费者
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
//6 设置Channel
channel.basicConsume(queueName, true, queueingConsumer);
while(true){
//7 获取消息
Delivery delivery = queueingConsumer.nextDelivery();
String msg = new String(delivery.getBody());
System.err.println("消费端: " + msg);
//Envelope envelope = delivery.getEnvelope();
}
}
}
4.运行Consumer代码观察RabbitMQ Management
生成了一个test001的队列,观察test001队列
该队列没有与对应的交换机绑定,是RabbitMQ默认交换机绑定处理的。
5.关闭消费者端代码开启生产者Producer 端代码,观察RabbitMQ Management
和我们代码中一样,发送了5条消息到RabbitMQ的test001消息队列,等待消费者消费。
6.启动消费者端代码
消费者端消费了消息,继续观察管理平台test001 queue
消息已经消费完成
以上就是通过amqp-client创建的一个简单的生产者消费者代码过程。