在RabbitMQ中提供了七种工作模式 :Simple 、Work 、Pub / Sub 、Routing 、 Topics 、 RPC
Publisher Comfirms。不同的工作模式有不同的分发规则。
1.1 Simple模式
Simple(简单模式):一个提供者(Produce),一个消费者(Consumer),一个队列(Queue),没有交换机。消费者监听该队列。
1.2 Work模式
Work模式:一个提供者(Produce),无交换机 , 一个队列 ,两个消费者(Consumer),两个消费者监听一个队列,对消息的消费是轮询方式接收。
1.3 Pub / Sub发布订阅模式(Fanout类型)
Pub / Sub模式(分列模式):一个提供者(Produce),一个交换机 (Exchange),多个队列 ,多个消费者(Consumer),消费者监听队列。其中,交换机只负责将消息绑定到队列中,不会存储消息。
Tips:交换机可以有多种类型,如:Fanout,Direct,Topic,headers。不同的交换机有不同的消息路由功能,发布订阅模式的交换机类型属于Fanout类型。
此外,Simple模式和Work模式也有交换机,是默认的交换机。
1.4 Routing路由模式(Direct类型)
Routing(直连模式): 一个提供者,一个交换机,多个队列,多个消费者。其中,提供者发送消息的时候会发送一个Rounting Key给交换机,交换机通过这个Rounting Key绑定到对应规则的队列上,实现消息的分发。
1.5 Topics主题模式(Topic类型)
Topics :一个提供者,一个交换机,多个队列,多个生产者。可以理解为因为Rounting模式的Routing Key都是固定的,Topics模式用通配符(类似于模糊匹配),使消息的分发更为灵活。
Tips: * 号:代表匹配一个词 (只能一个,不能多也不能少)
# 号:代表匹配一个或多个词 (可以没有,或者有很多)
1.6 RPC模式
RPC :指的是远程调用,客户端通过RabbitMQ发送消息到服务端,服务端调用函数对消息进行处理,再将处理结果通过另一消息队列返回给客户端。
严格意义来说,这种模式违背了MQ的初衷,它需要等待服务端放回结果,可以说不算一种新的通信方式。
1.7 Publisher Confirms 发布者确认模式
这种模式RabbitMQ的扩展,为了是实现消息可靠性投递。保证消息可靠性投递有以下几种模式:
1.确认模式:指的是提供者可靠投递到交换机的过程,不会因为网络或者其他问题导致消息丢失,再这个模式下,可以在提供者注册一个回调函数。当消息发送后,不管如何都会触发这个回调函数,可以通过这个回调函数来判断是否到达交换机。(只保障消息从提供者投递到交换机)
2.回退模式:指的是交换机可靠投递到队列的过程,不会因为网络或者其他问题导致消息丢失,在这个模式下,可以在提供者注册一个回调函数。当消息从交换机发送后,如果发送失败,则会执行回调函数,成功则不触发回调函数。(只保障消息从交换机投递到队列)
3.Consumer Ack:当消费者接收到一个消息进行消费时,Ack机制可以根据消费情况来决定此次消费是签收还是拒签。如果发送失败并且拒绝签收消息会发送到死信队列。
4.事务处理模式:指的是在一个事务中,要么消息全部发送成功,要么不发送消息,这个模式要确保确认模式和回退模式是关闭的,不能同时开启事务模式 和 确认 + 回退模式。 确认 + 回退模式可以同时开启。
版权归原作者 Yz_w 所有, 如有侵权,请联系我们删除。