一.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: # 你的虚拟机IPport: # 端口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 {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testvoid testSendMessage2Queue() {String queueName = "test.queue";String msg = "hello, amqp!";rabbitTemplate.convertAndSend(queueName, msg);}
}
test.queue队列中此时具有消息
五.在消费者服务模块yml配置MQ地址
spring:rabbitmq:host: # 你的虚拟机IPport: # 端口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);}
}