RabbitMQ消费端ACK与重回队列机制
2018-08-14 本文已影响149人
HmilyMing
消费端的手工ACK和NACK
消费端进行消费的时候,如果由于业务异常导致失败了,返回NACK达到最大重试次数,此时我们可以进行日志的记录,然后手动ACK回去,最后对这个记录进行补偿。
或者由于服务器宕机等严重问题,导致ACK和NACK都没有,那我们就需要手工进行ACK保障消费端消费成功,再通过补偿机制补偿。
消费端的重回队列
消费端的重回队列是为了对没有处理成功的消息,把消息重新递给broker。但是在我们的实际生产,一般都会关闭重回队列,
代码地址: https://github.com/hmilyos/rabbitmq-api-demo
生产端的代码基本没什么变化
![](https://img.haomeiwen.com/i9167995/5aa15c4eef149203.png)
注意看消费端的代码,图中圈出来的autoack一定要设置为false,要不然不会生效的
![](https://img.haomeiwen.com/i9167995/e302a285c8cb239c.png)
自定义消费者代码如下
![](https://img.haomeiwen.com/i9167995/e56e8fddc6a6d489.png)
先启动消费端,再启动生产端
![](https://img.haomeiwen.com/i9167995/63217f12d191fb7d.png)
注意看消费端的日志,发现按 0-4消费完后,0的重回队列了,符合我们的目标
![](https://img.haomeiwen.com/i9167995/693502d28cbbc549.png)
自此,重回队列演示完毕。