当前位置:   article > 正文

RabbitMQ-ack、nack、reject、unacked

unacked

1. 不做任何ack

如果队列使用的是手动ack,但在接收消息后不做任何ack处理,RabbitMQ会把消息标记为 unacked,unacked状态的消息不会被消费,并且占用RabbirMQ资源,只有当消费者channel断开或者服务器重启,消息才会重新回到ready状态被其他消费者消费。

2. ack

确认签收后,消息从队列中删除。

  • 自动ack

    消费者接收到消息的那一刻就发送ack信息到RabbitMQ的队列,队列将此条消息删除。

    自动ack的方式只要队列有消息,RabbitMQ会源源不断的把消息推送给客户端,而不管客户端能否消费的完。

  • 手动ack

    开发人员决定什么时机进行ack。

    如果没有及时进行ack,RabbitMQ会将来不及做ack的消息标记为unacked丢回RabbitMQ,被标记为unacked的消息无法被立刻重新消费,而是要等channel重启或者服务器重启才会变成ready(可消费的消息)。但等待服务器重启这个过程中如果积压了太多unacked消息,会导致MQ响应越来越慢,甚至崩溃的问题。

    解决方式就是及时处理消息

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/391271
推荐阅读
相关标签