一.SpringAMQP
Spring的官方基于RabbitMQ提供了一套消息收发的模板工具:SpringAMQP。并且基于SpringBoot对其实现了自动装配
SpringAMQP官方地址:SpringAMQP
SpringAMQP提供的功能:
-
自动声明队列、交换机及其绑定关系
-
基于注解的监听器模式,异步接收消息
-
封装了RabbitTemplate工具,用于发送消息
二.客户端整合SpringAMQP测试
一.导入依赖:
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二.rabbitMQ控制台新建一个队列:test.queue
三.在生产者服务模块yml配置MQ地址
spring:
rabbitmq:
host: # 你的虚拟机IP
port: # 端口
virtual-host: # 虚拟主机
username: # 用户名
password: # 密码
四.在生产者模块编写测试类,并利用RabbitTemplate实现消息发送
package com.itheima.publisher;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
public class SpringAmqpTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void testSendMessage2Queue() {
String queueName = "test.queue";
String msg = "hello, amqp!";
rabbitTemplate.convertAndSend(queueName, msg);
}
}
test.queue队列中此时具有消息
五.在消费者服务模块yml配置MQ地址
spring:
rabbitmq:
host: # 你的虚拟机IP
port: # 端口
virtual-host: # 虚拟主机
username: # 用户名
password: # 密码
六.在消费者服务模块编写监听类
package com.itheima.consumer.listeners;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class SpringRabbitListener {
@RabbitListener(queues = "test.queue")
public void listenTestQueueMsg(String msg){
System.out.println("spring消费者接收到生产者发送给test.queue队列的消息 " + msg);
}
}