在我们的应用程序中,我们使用RabbitMQ和spring-amqp(1.4.3.RELEASE)。 我们有两个队列。它们都配置了TTL(60000和100000)。 当我们启动应用程序时,它会出现以下错误:
[pool-4-thread-1] ERROR org.springframework.amqp.rabbit.connection.CachingConnectionFactory - 频道关闭:频道错误;协议方法:#method(reply-code = 406,reply-text = PRECONDITION_FAILED - 不相等的arg' x-message-ttl'用于队列' queue1'在vhost' /& #39;:已收到' 60000'但当前是' 100000',class-id = 50,method-id = 10)
然后当我们尝试向队列发送消息时抛出异常:
[http-nio-8080-exec-8]错误[P181786EJG755SN8I3S74584216UV1]未收到回复 - 模板中可能超时? org.springframework.remoting.RemoteProxyFailureException:没有收到回复 - 可能是模板中的超时? 在org.springframework.amqp.remoting.client.AmqpClientInterceptor.invoke(AmqpClientInterceptor.java:60) 在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 在com.sun.proxy。$ Proxy83.getUserById(未知来源)
在互联网上搜索得到以下结果:
http://forum.spring.io/forum/spring-projects/integration/amqp/124865-unexpected-behaviour-with-rabbit-admin 特别是,这个错误:https://jira.spring.io/browse/AMQP-266
在我们发现该错误后,我们将两个队列的TTL值更改为60000,并且不再显示错误。应用程序运行正常。 所以,似乎TTL仍然存在一个错误。
答案 0 :(得分:2)
我发现了问题,这与错误的配置有关。 所以,要解决这个问题:
答案 1 :(得分:1)
Dmitrii Semenov的回答是正确的,仅供参考:
“尝试从Rabbitmq管理中删除队列”
注意:在docker中,您可以访问“您的IP或本地主机”:15672
参考: https://github.com/streadway/amqp/issues/60#issuecomment-18119437