神即道 道法自然 如来

Spring Boot 入门之消息中间件

一、前言
在消息中间件中有 2 个重要的概念:消息代理和目的地。当消息发送者发送消息后,消息就被消息代理接管,消息代理保证消息传递到指定目的地。

我们常用的消息代理有 JMS 和 AMQP 规范。对应地,它们常见的实现分别是 ActiveMQ 和 RabbitMQ。

二、整合 ActiveMQ
2.1 添加依赖

2.2 添加配置

此处 spring.activemq.pool.enabled=false,表示关闭连接池。

2.3 编码
配置类:

负责创建队列和主题。

消息生产者:

消息消费者:

消息消费者使用 @JmsListener 注解监听消息。

2.4 测试

打印结果:

测试发布/订阅模式时,设置 spring.jms.pub-sub-domain=true

三、整合 RabbitMQ
3.1 添加依赖

3.2 添加配置

3.3 编码
配置类:

RabbitMQ 有多种工作模式,因此配置比较多。想了解相关内容的读者可以查看《RabbitMQ 工作模式介绍》或者自行百度相关资料。

消息生产者:

消息消费者:

消息消费者使用 @RabbitListener 注解监听消息。

3.4 测试

测试结果略过。。。

踩坑提醒1:ACCESS_REFUSED – Login was refused using authentication mechanism PLAIN

解决方案:

1) 请确保用户名和密码是否正确,需要注意的是用户名和密码的值是否包含空格或制表符(笔者测试时就是因为密码多了一个制表符导致认证失败)。

2) 如果测试账户使用的是 guest,需要修改 rabbitmq.conf 文件。在该文件中添加 “loopback_users = none” 配置。

踩坑提醒2:Cannot prepare queue for listener. Either the queue doesn’t exist or the broker will not allow us to use it

解决方案:

我们可以登陆 RabbitMQ 的管理界面,在 Queue 选项中手动添加对应的队列。

四、参考资料
消息中间件简单介绍

Spring Boot 官方文档

Rabbit MQ 访问控制相关

点赞