记一个小坑
来源:5-11 利用RabbitListener快速实现消息处理器(上)
LBruce
2021-04-03
在测试使用Jackson2JsonMessageConverter,@RabbitListener,@RabbitHandler的时候,一并在配置文件中配置了acknowledge-mode为manual。结果在消费者方法中调用channel.basicAck(deliveryTag, false)抛出错误,提示
reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1
很明显是因为这个deliveryTag为1的消息已经被确认了,所以在手动调用basicAck的时候才发生错误,即手动ack并没有生效。。。
查阅了一下资料后发现,可以在声明RabbitListenerContainerFactory的时候,设置一下AcknowledgeMode,问题才得以解决
手动ACK不生效的原因好像是因为加上了factory.setMessageConverter(new Jackson2JsonMessageConverter())这一行代码,ack就被设置为auto ack。。。即便配置文件配置了manual,也不起作用。。。。
写回答
1回答
-
感谢分享
112021-04-06
相似问题