文章目录
- 1. 前言
- 2. Basic Queue 简单队列模型
- 2.1 父工程导入依赖
- 2.2 消息发送
- 2.2.1 消息发送方必要的配置
- 2.2.2 发消息
- 3. 消息接收
- 3.1 消息接收方必要的配置
- 3.2 接收消息
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 页面
看到消息被消费了.