SpringBoot + RabbitMQ 消息队列案例

SpringBoot + RabbitMQ 消息队列案例

  1. 确保你的MQ已经启动并配置好了,准备一个SpringBoot工程,这里我已经准备好了,mq-code是我的父工程,其他两个都是子工程。

  2. 引入依赖,这两个依赖是关键

  3. 在网页中打开你的MQ,输入你的ip地址,如果你是本地那么就是localhost或者127.0.0.1。我的是在虚拟机上的就要输入虚拟机的地址,加上端口号15672,一般都是15672。回车就进到了MQ的页面。刚开始进来的时候需要你输入用户和密码,这个用户和密码,和你当初配置MQ的时候有关。进来之后点击Admin选项,先添加一个用户,权限为Admin。

    之后大家再添加一个虚拟主机

  4. 之后在yml文件配置,我用的是yml格式的,使用其他格式的也没有问题。因为我有两个子工程,所以这个东西要去子工程里面配,父工程不需要配置

  5. 配置完毕后,我们先在2个子工程的启动类上,搞一下消息转换器

  6. 现在我们就可以开始写测试类了,在Publisher工程中写一个测试类,这里我通过交换机direct来帮我路由发送消息,交换机有很多种。当然也可也直接发现消息到队列中。现在写好了测试类,但是,交换机、队列、我们都还没有创建。那么我们在consumer工程里面创建一个并监听。

  7. 创建交换机、队列并监听。我直接通过注解的方式创建的队列和交换机。因为我使用的是direct交换机,我们不用确认是哪个队列来接收信息,而是通过Key来确定,比如这里Key是red,那么我发送消息的时候指定这个red的Key,那么我的消息就会发送到绑定了Key消息的队列中。

  8. 现在我们来测试一下,先启动consuner工程。看效果

  9. 接下来运行publisher的测试类,看控制台的效果。当生产者发送消息后,消费者就直接监听到了消息,并打印了出来。

  10. 接下来我们来测试一下,work模型。2个消费者来消费同一个队列,并加了休眠,来模拟两个不同的消费者性能,很明显消费者1的性能更高,2的性能就低一些,那么久应该是消费者1处理更多的数据。

  11. 编写测试类,运行看效果,控制台的效果可以看到消费者2只处理了一条数据,其他的全都是消费者1来处理的。这个的原因是因为我做了一个配置,这个配置的意思就是,当消费者处理了一条数据后再接收数据。如果不做这个配置,那么你得两个消费者会平均分配数据。

  12. 还记得我们写的消息转换器么?测试一下

    编写测试类

    1. 这里可以看到我吧Key进行了改变,那么我们可以用原来的队列,绑定一个blue来接收数据,也可以新创一个队列来接收数据。这里我就用原来的队列了。

      下图,可以看到,我只对消费者1绑定了Blue,并没有对2绑定,那么接收的时候就应该是1能接收到数据,2不能。但是现在那么都不能接收到数据,因为我们发送的HashMap,没有能来接收的参数,所以那么一个都接收不到,大家自己定义一个就好了。记得把消费者1的blue删除,否则会因为类型问题报错的

    2. 开始测试

  13. OK,这样简单的消息队列就完成了。

相关推荐
撸串-研究生4 小时前
社区流浪宠物领养救助系统【附源码】
mysql·springboot·宠物·社区公益服务
j7~5 小时前
【仿 RabbitMQ 项目】发布订阅消息队列 (篇八):交换机数据管理模块,分层类设计、SQLite 回调原理与代码实现
服务器·网络·数据库·消息队列·交换机·交换机数据管理·sqlite回调原理
做个文艺程序员2 天前
MQ第04篇:ActiveMQ深度解析:JMS规范、Spring JMS整合与企业级异步通信实战
spring·消息队列·activemq·java-activemq·jms
做个文艺程序员2 天前
MQ第03篇:RabbitMQ进阶实战:Topic路由+死信队列+延迟消息,SaaS订单超时取消完整方案
分布式·消息队列·rabbitmq·死信队列·延迟队列
吴爃3 天前
小微企业 SRE 稳定性建设(四):消息链路与消费积压
中间件·容量规划·消息队列·sre
BLUcoding4 天前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
做个文艺程序员4 天前
MQ第02篇:RabbitMQ快速上手教程:AMQP模型详解+Spring Boot整合实战(附完整代码)
spring boot·消息队列·rabbitmq·java-rabbitmq·amqp
我最爱吃鱼香茄子4 天前
【毕业设计优选】人力资源管理系统|Java|SpringBoot|Vue|前后端分离|带详细文档+部署教学视频
java·vue·毕业设计·springboot
做个文艺程序员5 天前
MinIO第05篇:MinIO事件通知机制与Kafka集成——构建SaaS平台的异步文件处理管道
kafka·消息队列·springboot·minio·事件驱动·异步处理
骑着蜗牛撵大象3275 天前
SpringBoot+Vue3 企业智能体侧挂架构:独立服务、独立数据库与主线零侵入落地
数据库·spring boot·架构·vue·springboot·事件驱动·服务拆分