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,这样简单的消息队列就完成了。

相关推荐
带刺的坐椅7 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·springboot·web·solon
十五喵源码网16 天前
基于springboot2+vue2的租房管理系统
java·毕业设计·springboot·论文笔记
whaledown17 天前
Kafka 与 Java 消息队列入门:用订单场景理解核心机制
java·kafka·消息队列·springboot
阿昌喜欢吃黄桃17 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
二哈赛车手17 天前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
十五喵源码网18 天前
基于SpringBoot2+vue2的酒店客房管理系统
java·毕业设计·springboot·论文笔记
这里是杨杨吖18 天前
SpringBoot+Vue高校在线考试系统 附带详细运行指导视频
vue·在线考试·springboot
就改了19 天前
ElasticsearchRestTemplate使用方法详解!!!
java·elasticsearch·springboot
码农飞哥21 天前
RocketMQ消费接口设计实战:为什么HTTP回调接口必须吞掉所有异常,始终返回成功?
网络协议·http·中间件·消息队列·rocketmq
小小工匠24 天前
Redis - 缓存与数据库一致性:问题分析与解决方案
redis·缓存·性能优化·消息队列·并发