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

相关推荐
她说..1 小时前
手机验证码功能实现(附带源码)
java·开发语言·spring boot·spring·java-ee·springboot
武子康1 小时前
Java-203 RabbitMQ 生产者/消费者工作流程拆解:Connection/Channel、默认交换器、ACK
java·分布式·消息队列·rabbitmq·erlang·ruby·java-rabbitmq
小满、1 小时前
RabbitMQ: 同步异步解析、安装与控制台实践
分布式·消息队列·rabbitmq·mq
原来是好奇心3 小时前
深入Spring Boot源码(七):测试框架原理与最佳实践
java·源码·springboot
武子康3 小时前
Java-202 RabbitMQ 生产安装与容器快速启动:Erlang 兼容、RPM 部署与常用命令
java·消息队列·rabbitmq·erlang·java-rabbitmq·mq
大学生资源网18 小时前
java毕业设计之面向校园的助力跑腿系统设计与实现源码(源码+文档+数据库)
java·数据库·mysql·毕业设计·源码·springboot
原来是好奇心20 小时前
深入Spring Boot源码(五):外部化配置与Profile机制深度解析
java·源码·springboot
沧澜sincerely1 天前
WebSocket 实时聊天功能
网络·websocket·vue·springboot
武子康1 天前
Java-200 RabbitMQ 架构与 Exchange 路由:fanout/direct/topic/headers
java·架构·消息队列·系统架构·rabbitmq·java-rabbitmq·mq
后端小张1 天前
【JAVA 进阶】深入拆解SpringBoot自动配置:从原理到实战的完整指南
java·开发语言·spring boot·后端·spring·spring cloud·springboot