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 天前
Linux消息队列 & 共享内存 笔记
linux·消息队列·共享内存
小宇宙清歡渡1 天前
SpringBoot JDK17 线程池的使用
springboot·线程池·jdk17
pnoker3 天前
IoT DC3 消息总线:六适配器可插拔设计
物联网·架构·kafka·消息队列·rabbitmq
祖力553 天前
进程间通信(IPC机制):消息队列与共享内存
linux·消息队列·共享内存·通信·进程间通信
十五喵源码网3 天前
基于springboot2+vue2的疾病防控综合系统
java·毕业设计·springboot·论文笔记
玉&心4 天前
GraalVM 21 Native Image 编译踩坑全记录:从 class 初始化冲突到成功构建
ai·springboot·graalvm·rag
十五喵源码网4 天前
基于SpringBoot2+vue2的健身房管理系统
java·毕业设计·springboot·论文笔记
記億揺晃着的那天5 天前
从 0 到 2,000+ 次提交:ERP 四年的架构演进
架构·springboot·erp
QQ_21696290965 天前
【源码编号:project93375】SpringBoot汽车维修管理信息系统:客户车辆、维修预约、工单派发、配件结算全流程实战
java·spring boot·后端·汽车·springboot·需求分析
罗超驿7 天前
SpringMVC请求参数获取与响应处理|全套注解详解
springmvc·springboot·javaweb·请求参数·后端开发