【RabbitMQ】队列类型
Rabbitmq队列类型
基本消息模型:生产者 –> 队列 –> 一个消费者
一个队列对应一个消费者
work消息模型:生产者 –> 队列 –> 多个消费者共同消费
一个队列对应多个消费者
交换机-订阅模型-Fanout:广播,将消息交给所有绑定到交换机的队列,每个消费者都可以收到同一条消息
直连型交换机,根据消息携带的路由键将消息投递给对应队列。
大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键 routing key 。
然后当一个消息携带着路由值为X,这个消息通过生产者发送给交换机时,交换机就会根据这个路由值X去寻找绑定值也是X的队列。交换机-订阅模型-Direct:定向,把消息交给符合指定 rotingKey 的队列(路由模式)
扇型交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。
交换机-订阅模型-Topic:通配符,把消息交给符合routing pattern(主题模式)的队列
主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。 简单地介绍下规则:
*
(星号) 用来表示一个单词 (必须出现的)#
(井号) 用来表示任意数量(零个或多个)单词
通配的绑定键是跟队列进行绑定的,举个小例子:
队列Q1 绑定键为
*.TT.*
队列Q2绑定键为TT.#
如果一条消息携带的路由键为A.TT.B
,那么队列Q1将会收到;
如果一条消息携带的路由键为TT.AA.BB
,那么队列Q2将会收到;RPC模式
3、4、5这三种都属于交换机-订阅模型,只不过进行路由的方式不同。
还有Header Exchange 头交换机 ,Default Exchange 默认交换机,Dead Letter Exchange 死信交换机
参考文献:
SpringBoot整合RabbitMQ的五种模式示例
Springboot 整合RabbitMQ
RabbitMQ Spring-Boot 整合 使用教程 可靠性投递 顺序消费 高可用方案 事务消息 幂等性 SET化架构 等等