1. 前言
SpringAMQP
是基于 RabbitMQ
封装的一套模板,并且还利用 SpringBoot
对其实现了自动装配,使用起来非常方便。
SpringAmqp
的官方地址:https://spring.io/projects/spring-amqp
说明:
1.Spring AMQP 是对 Spring 基于 AMQP 的消息收发解决方案,它是一个抽象层,不依赖于特定的 AMQP Broker 实现和客户端的抽象,所以可以很方便地替换。比如我们可以使用 spring-rabbit 来实现。
2.
spring-rabbit
用于与RabbitMQ服务器交互的工具包3.SpringAMQP提供了三个功能:
- 自动声明队列、交换机及其绑定关系
- 基于注解的监听器模式,异步接收消息
- 封装了RabbitTemplate工具,用于发送和接收消息
2. Basic Queue 简单队列模型
步骤如下:
1.在父工程中引入 spring-amqp 的依赖
2.在 publisher 服务中利用 RabbitTemplate 发送消息到 test2024.simple.queue 这个队列
3.在 consumer 服务中编写消费逻辑,绑定 test2024.simple.queue 这个队列
2.1 父工程导入依赖
<!--AMQP依赖,包含RabbitMQ--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
2.2 消息发送
2.2.1 消息发送方必要的配置
# RabbitMQ rabbitmq: host: **.105.**.** port: 5672 username: **** password: **** virtual-host: /
2.2.2 发消息
@SpringBootTest public class TestRabbitMQ { @Autowired private RabbitTemplate rabbitTemplate; @Test public void test01() { // 声明队列名称 String queueName = "test2024.simple.queue"; String message = ""; // 发送消息 rabbitTemplate.convertAndSend(queueName, message); } }
注意在执行发送消息前要确保 队列 先声明到. 所以我们可以先在配置类里声明出队列:
@Configuration public class RabbitMQConf { // 声明一个 队列 test2024.simple.queue @Bean public Queue testSimpleQueue() { return new Queue("test2024.simple.queue"); } }
启动SpringBoot项目后,让该队列先注册进MQ.然后以后执行测试代码都不用再注册了.
当 该 队列注册进去后,我们执行测试发送消息代码, 执行成功后,看MQ页面:
如此 就完成了 消息的发送.
3. 消息接收
3.1 消息接收方必要的配置
spring: rabbitmq: host: ip # 主机名 port: 5672 # 发送消息和接收消息的端口号 virtual-host: / # 虚拟主机 username: *** # 用户名 password: *** # 密码
3.2 接收消息
@Component @Component public class SpringRabbitListener { // 监听制定队列,Spring只要接收到该队列的消息就会接收消息 @RabbitListener(queues = "test2024.simple.queue") public void rabbitListener(String message){ System.out.println("接收到消息:" + message);; } }
启动消息接受服务. 控制台打印收到的消息:
至此 . 我们用 RabbitMQ 来发送消息及接受消息就实现了.
MQ 页面
看到消息被消费了.