rabbitmq消息应答
以下仅个人理解
mq的推拉模式: 我们学习的都是推模式,队列主动发送消息给消费者,所以消费者这里应该是会有一个缓存区的,rabbit也有拉模式,channel.basicGet()来实现拉模式。
我的消息应答理解:
一旦消费者channel.basicConsume()调用这个方法,就会告诉对应的队列,消费者的信息,是否自动应答等等。
队列发送消息的时候会根据消费者给的信息来做出不同的决策:
1.消费者是自动应答:队列发送了数据之后,就自动将发送过的消息清除了,从内存中也清除了。
2.消费者是手动应答:队列发送数据之后,就将消息的模式从ready变为unacked,相当于逻辑删除的感觉,
没有删除这条数据。
手动应答时消费者做出决策:
1.接收:接收消息,发送应答信息给队列,队列将unacked中的消息实现真正的物理(内存)删除
2.拒绝:拒绝消息,队列根据拒绝方式执行不同的策略
2.1:拒绝但是重回队列,队列将那些unacked的消息变回ready
2.2:拒绝且不回队列,消息直接丢弃