天天看点

rabbitmq消息应答

rabbitmq消息应答

以下仅个人理解

mq的推拉模式: 我们学习的都是推模式,队列主动发送消息给消费者,所以消费者这里应该是会有一个缓存区的,rabbit也有拉模式,channel.basicGet()来实现拉模式。

我的消息应答理解:

一旦消费者channel.basicConsume()调用这个方法,就会告诉对应的队列,消费者的信息,是否自动应答等等。
队列发送消息的时候会根据消费者给的信息来做出不同的决策:
	1.消费者是自动应答:队列发送了数据之后,就自动将发送过的消息清除了,从内存中也清除了。
	2.消费者是手动应答:队列发送数据之后,就将消息的模式从ready变为unacked,相当于逻辑删除的感觉,
	没有删除这条数据。

手动应答时消费者做出决策:
        1.接收:接收消息,发送应答信息给队列,队列将unacked中的消息实现真正的物理(内存)删除
        2.拒绝:拒绝消息,队列根据拒绝方式执行不同的策略
                                           2.1:拒绝但是重回队列,队列将那些unacked的消息变回ready
                                           2.2:拒绝且不回队列,消息直接丢弃