订阅模型,工作队列模型,路由规则模型等内容讲解
树图思维导图提供 rabbitmq五种消息模型脑图 在线思维导图免费制作,点击“编辑”按钮,可对 rabbitmq五种消息模型脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:8eef148360369ad5daf5e4d5ae32ca21
rabbitmq-02-五种消息模型思维导图模板大纲
图解
Prerequisites
工作队列,又称任务队列,思想就是避免执行资源密集型任务时,必须等待它执行完成。
当你运行许多消费者 时,任务将在他们之间共享,但是一个消息只能被一个消费者获取。
工作队列消息模型中的消费者,它们之间是竞争关系。
生产者 -Producer
消费者 -Consumer
实际上有两个消费者进行测试
图解
将一个信息传递给多个消费者
订阅模型的特点
1:一个生产者,多个消费者
每一个消费者都有自己的一个队列
生产者没有将消息之间发送到队列而是发送到 交换机
每个队列都要绑定到交换机
生产者发送的消息,经过交换机到达队列,实现了一个消息被多个消费者获取的目的
交换机的作用和类型
作用
一方面接收生产者发送的消息, 另一方面,知道如何处理消息 例如, 递交给某个特别队列, 递交给所有队列, 或是将消息丢弃, 这都取决与Exchange的类型
类型:
Fanout:广播,将消息交给所有绑定到交换机的队列————发布订阅模式
Direct: 定向,把消息交给符合指定routing key的队列 路由规则模式
Topic:通配符,把消息交给符合routing pattern 路由模式 的队列(通配符路由规则模式)
在某些场景下,希望不同的消息 ,被不同的队列消费。
使用Direct类型的Excahnge
在Direct模型下,队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey(路由key)
消息的发送方在向Exchange发送消息时,也必须指定消息的routing key。
生产者
消费者
广播模式消息发送的流程:
有多个消费者
每个消费者有自己的queue队列
每个队列都要绑定到Exchange交换机
生产者发送到消息只能发送到交换机, 交换机决定发送给哪个队列
交换机把消息发送给绑定过的所有队列
队列的消费者都能拿到消息,实现一条消息被多个消费者消费
定义生产者
定义消费者
Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路 由到不同的队列。
只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符!
通配符规则
#: 匹配一个 或 多个 词
*:匹配不多不好,刚好一个 词
audit.#:
可以匹配 audit.irs.corporate 或者audit.irs
audit.*
只能匹配audit.irs
生产者
消费者
1. 消费者的ACK机制。可以防止消费者丢失消息。.
2. 但是,如果在消费者消费之前,MQ就宕机了,消息就没了。
要将消息持久化,前提是:队列、Exchange都持久化
1.交换机持久化
2.队列持久化
3.消息持久化
spring-boot实现rabbitmq
Spring-amqp是对AMQP协议的抽象实现,而spring-rabbit 是对协议的具 体实现,也是目前的唯一实现。底层使用的就是RabbitMQ。
.引入相关依赖
编写配置类
编写yml配置文件
编写Controller类进行测试 相当于在网页真是的生产者
编写监听器 消费者
手动ACK操作
思维导图模板大纲
思维导图模板大纲
思维导图模板大纲
树图思维导图提供 一元线性回归从建模到应用的全过程 在线思维导图免费制作,点击“编辑”按钮,可对 一元线性回归从建模到应用的全过程 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a116e35696a4e946bb7795635f4520b3
树图思维导图提供 软测模型 在线思维导图免费制作,点击“编辑”按钮,可对 软测模型 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:961964ffe89f43580de5b41ad55cdaa5