老师,您好。在设置basicAck(不论false或true)后,出现异常

来源:4-6 Jms-spring事务实例

芒果树天堂

2018-09-11

com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80);
在注释掉channel.basicAck(DELIVERY_TAG,true);这行代码,就不会抛出异常了

写回答

1回答

大漠风

2018-09-11

这个错误应该是由于重复确认,也就是你确认消息的时候,实际上该消息已经给确认了。

在默认情况下,rabbitMQ的配置,应该是自动确认消息的,也就是AcknowledgeMode.AUTO,这种情况下,只要没有异常,就会自动确认消息。那么这时候,你再调用channel.basicAck(...)就是重复确认了。而且,这个方法里面的第二个参数,true或false是意思是,是否要将这个消息以及他之前的消息都确认。

0
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程