RabbitMQ默认acknowledge-mode为auto即自动ack模式,只要有消费者接受消息,无论消费是否成功MQ都认为消费成功。网络原因和消费者自身程序原因都有可能导致这条消息没有被正确消费处理,手动Ack的方式就可以较为严格的保证消息终被成功消费。
需要注意的是手动ACK与重试机制一样都需要考虑幂等性问题,设置ACK失败重新消费的次数,并且每次消费都要校验幂等性。
spring:rabbitmq:host: 127.0.0.1port: 5672username: guestpassword: guestlistener:simple:prefetch: 1concurrency: 5max-concurrency: 10acknowledge-mode: manual #手动ack 默认是auto自动retry:enabled: false #关闭重试;默认情况消费异常会无限重试,但是重试与手动ACK作用类似因此二选一即可
MQ为队列中每一条待消费的消息定义的标识,用于ack时回传。当某一条消息被拒绝ack后重新放入队列时这个标识可能被重置。
这个标识可以在headers中获取,也可以在Message的messageProperties中拿到。
com.rabbitmq.client包下的接口,通过Channel接口的方法,可
本文发布于:2024-02-01 16:28:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677612637947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |