RabbitMQ在SpringBoot中的应用

1.简单模式

P:生产者,要发送消息的程序.

C:消费者,消息的接收者.

Queue:消息队列,类似于一个邮箱,生产者向其中投递消息,消费者从其中取出消息.

特点:一个生产者P,一个消费者C,消息只能被消费一次,也成为点对点模式.

适用场景:消息只能被单个消费者处理.

设置队列的名称为simple.queue

设置一个叫simple.queue的队列

设置生产者

设置消费者

2.工作队列

一个生产者P,多个消费者C1,C2...消费者从同一个队列中获取信息,消息不会重复,会发送给不同的消费者.使用与在集群环境中做异步处理.

这里使生产者向队列发送10条消息.

设置两个消费者从指定队列中获取消息.

实现的结果如下:

可以看到消费者依次从work.queue这个队列中消费消息,且消息不会重复.

3.发布订阅模式.

这里与前面不同的是,这个图中体现出了,交换机(Exchange)

交换机:生产者首先会将消息发送到Exchange,由交换机将消息按照一定的规则路由到一个或者多个队列中.RabbitMQ交换机有四种类型,fanout,direct,topic,headers,不同类型有着不同的路由策略.Fanout :广播,将消息交给所有绑定到交换机的队列(Publish/Subscribe模式) Direct :定向,把消息交给符合指定routing key的队列(routing模式)Topic: 通配符,把消息交给符合 routing pattern(路由模式)的队列.headers 类型的交换机不依赖与路由键的匹配规则来路由消息,而是根据发送的内容中的headers属性进行匹配,性能较差,基本上不会见到它的存在.**Exchange(交换机),**只负责转发消息,不具备存储消息的能力,因此,如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,就会导致消息的丢失.

这里介绍的是Publish/Subscribe模式,一个生产者P,多个消费者C1,C2,X表示交换机,这种模式中,生产者P向交换机发送消息,经过交换机,会被路由到Q1,Q2两个队列.消费者C1,C2收到的信息完全相同.这种模式适用于相同消息需要被多个消费者接受的场景

声明队列和声明交换机以及交换机和队列的绑定

发送消息

消费消息.

路由模式:在路由模式的基础上增加路由Key.发布订阅模式是无条件将所有消息分发给所有消费者,路由模式是Exchange根据RoutingKey的规则,将数据筛选后发给对应的消费者队列.使用场景:需要根据特定规则分发消息的场景.

声明队列和声明交换机以及交换机和队列的绑定

发送消息

接收消息

通配符模式.

路由模式的升级版,在routingKey的基础上,增加了通配符的功能,Topic和Routing的基本原理相同,即:生产者将消息发给交换机,交换机根据routingKey将消息转发给与routingKey匹配的队列.不同之处是:routingKey的匹配方式不同,Routing模式是相等匹配,topics模式是通配符匹配.

声明队列和交换机以及队列和交换机的绑定.

发送消息

接收消息:

下面是一个简单的应用.一个物流系统,顾客在把订单发出之后,将订单消息暂存在RabbitMq,之后再转发到商家.

这里实现物流消息的发送与接收.为了方便演示,这里把订单系统和物流系统创建在一个项目中.发送的消息如下:这里发送了两条消息.建立物流系统,对订单消息进行消费:可以看到队列中已经没有消息了.这里尝试发送一个对象,该对象有两个属性商品名和商品ID.

相关推荐
xixingzhe223 分钟前
spring boot对接Dify
java·spring boot·dify
步行cgn28 分钟前
Spring Boot 指定数据来源详解
spring boot·后端·python
一个有温度的技术博主1 小时前
深入理解 Spring Boot 自动装配
java·spring boot·后端
步行cgn2 小时前
Spring Boot 将配置绑定到第三方对象详解
spring boot·后端·python
凤山老林2 小时前
Spring Boot 集成 Apache Kafka Streams 构建流处理应用:状态存储、窗口聚合与
spring boot·kafka·apache
Flynt15 小时前
把公司项目迁到 Spring Boot 4.0:编译通过只是开始
java·spring boot·后端
yxlalm17 小时前
5.3解决超卖问题
java·spring boot·超卖
边境悍匪19 小时前
蜗牛学苑 Java 智能体学习 Day39|SpringAI 会话存储、Function‑Call 工具调用、MCP 思维导图复盘
java·开发语言·spring boot·学习·阿里云
xcl092520 小时前
全民健身智慧管理系统实战指南:从架构设计到部署落地
java·spring boot
Bs_MoneyMagnet21 小时前
基于springboot+vue的宠物殡葬管理平台的设计与实现 源码+文档
java·javascript·vue.js·spring boot·后端·宠物