删除队列不是重新定义,消费者停止处理消息(Deleted queue is not redefine

2019-10-20 07:53发布

我试图解决以下问题:

  1. 我有2 SimpleMessageListenerContainer一样在java中的conf定义。
  2. 他们每个人都有自己的监听包裹适配器,他们都使用相同的CachingConnectionFactory(可以吗?)。 此外它们中的每处理不同的队列(具有恒定名)
  3. 当无论什么原因,队列中的一个被删除我测试场景。
  4. 当我手动从Web管理控制台删除其容器试图重新定义这个队列和失败(所有试失败)。 唯一的例外是不是真的讲述了失败的原因。
  5. 最终,这个队列的所有消费者线程“重新启动”,然而他们不会消耗任何进一步的消息。 即使别人将重新定义此队列(如生产者)

所以有几个问题:

  1. 我可以修复的队列重新定义不知何故,或检查为什么重新定义失败? 在重新开始队列作品的定义。 这使我下一个问题
  2. 可能是我可以让心跳发送者以某种方式使用守护线程? 它可以防止从JVM退出,这样在重新启动时没有发生。 它不会解决问题,但新的JVM进程成功,重新定义队列。 重新启动将主管所致。

同时我得到当删除队列中的所有用户(在第一容器)不是真正的工作,我期望JVM会退出,但可能是因为我有第二个容器,这是确定(所有消费者活着,队列存在)的情况下, JVM中继续生活(可能是当第二个容器将被关闭心跳发送方也将停止?)

任何建议,将不胜感激。 如果需要的话我会发布的Java配置的代码段。

Answer 1:

我们只是通过增加一个“固定”这个missing-queues-fatal属性来侦听容器。

看到这里拉入请求 。

我们不能在发行点架构更改,以便有一对夫妇的方式来配置它的1.3.x; 它已被添加到模式中的1.4.x和将在可用的<rabbit:listener-container/> ; 你可以看到这里的1.4.x拉动请求 。

1.3.5应可在本周晚些时候或下一个,但你可以尝试1.3.5.BUILD-SNAPSHOT现在,如果你想要的。

当它被设置为false(默认为true),容器将进入恢复模式,使用recovery-interval

文档为1.3.5。 快照是在这里 。



文章来源: Deleted queue is not redefined, consumers stop to handle messages
标签: spring-amqp