什么是消息确认?
rabbitMq在传递消息过程中充当了代理人的角色,这个代理人就是broker,对于生产者(producer)来说,怎么知道消息被成功投递到了broker呢?
rabbitmq提供了消息监听器,即listener来接收消息的投递状态 —— 这个listener指的是producer端的,而消息确认的确认涉及到两种状态,confirm和return
总结下来就是,消息从producer发送到broker之后listener收到的状态
Confirm 与 Return
confirm 代表producer将消息送到broker时产生的状态,后续可能会出现两种状态,
—— ack ,表示消息成功送达broker并被broker接收
—— nack,broker拒收消息,原因很多种,比如 队列已满,消息限流,IO异常等
Return 代表消息被broker接收(ack)后,但是没有找到合适的队列、或者正确的routingkey等进行消息的投递而产生的状态,再这样的情况下,消息最终会return给producer,这种情况下的消息也叫死信。
注意的是,以上两种状态只针对producer,即producer和broker之间消息的状态,和consumer端是否消费消息无关
Confirm 与 Return的使用
在rabbitmq中,Confi