1.连接rabbitMQ jar包: springboot整合rabbitMQ
<!--rabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
2.连接rabbitMQ
private Connection connection; //连接
private String queueName="zsq"; //设置消息名称
@Before
public void before() throws IOException, TimeoutException {
ConnectionFactory factory=new ConnectionFactory(); //新建连接
factory.setHost("47.99.13.21"); //ip
factory.setPort(5672); //端口
factory.setUsername("zsq"); //用户名
factory.setPassword("zsq2170"); //密码
factory.setVirtualHost("/zsq"); //虚拟主机名 服务器
connection=factory.newConnection(); //建立连接
System.out.println("连接成功");
//获取连接amqp://zsq@47.99.13.21:5672//zsq 表示连接成功
System.out.println("获取连接"+connection);
}
3.发送消息,建立生产者
@Test
public void test01() throws IOException, TimeoutException {
//1.定义通道
Channel channel = connection.createChannel();
//2.定义消息
String msg="我是简单模式";
//3.定义队列
/*
* 队列参数介绍
* 1.queue 队列名称
* 2.durable 队列是否持久化
* 3.exclusive 队列是否提供者独有 false
* 4.autoDelete 当消息处理后,是否自动删除
* 5.arguments 是否需要传递多余的参数
*/
channel.queueDeclare
(queueName,false,false, false,null);
//4.将消息写入队列
/*
* 参数说明:
* @param exchange 交换机,将消息发送到不同的队列中 不能为nill 传""
* @param routingKey 消息发送的标识符 不能为null 可以传""
* @param props 其他的配置文件
* @param body 消息的二进制数组
*/
channel.basicPublish("",queueName,null,msg.getBytes());
//5.关闭流 关闭连接
channel.close();
connection.close();
System.out.println("消息队列发送成功");
}
4.执行6次,发送6次消息,查看rabbitMQ客户端,确认队列已经写入6条消息
5.编辑消费者,消费消息
<!-- 消息队列 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.5.1</version>
</dependency>
/*
* 编辑消费者
*/
@Test
public void consumer() throws IOException, InterruptedException {
//1.定义Channel
Channel channel = connection.createChannel();
//2.定义队列
channel.queueDeclare
(queueName,false,false,false,null);
//3.定义消费者
QueueingConsumer consumer=new QueueingConsumer(channel);
//4.将队列与消费者绑定.通过循环获取队列的消息 回复ack true
channel.basicConsume(queueName,true,consumer);
while (true){
byte[] body = consumer.nextDelivery().getBody();
String mes=new String(body);
System.out.println(mes);
}
}