rabbitmq默认是自动ack,消费端只要消费,mq服务就会删除这条消息。
我们想象以下场景:
假如我们消费服务出现异常,这条消息被mq服务删除,当我们修复了消费服务,但是无法主动重新消费这条消息,这种业务逻辑显然是不可行的。
正常业务逻辑应该是本地业务执行成功,手动ack这条消息。那有的小伙伴就说了,业务执行完毕,手动ack的时候恰好服务宕机了,重启这不是会造成重复消费吗?没错,这就牵扯mq的另一个问题了,mq消息重复消费,后续文章会写如何解决这个问题。本文主要讲解mq的手动ack
mq消费端手动ack,是保证可靠性消费的核心保障。
application.properties配置
java代码,
mq消息被消费
但是mq服务器的消息并没有被删除
代码改造如下
参考文献: