2017-04-20 179 views
0

我正在使用rabbitmq在我的服务中进行消息传递。假设有2个微服务A和B.rabbitmq:消息不被消费者使用,但发布者能够发布消息

还有更多3个交换和相应的队列之间存在。

A是出版商,B是这里的消费者。当从A发送消息时,它正在队列中成功更新(能够在控制台队列中看到正在增加)。但是这里消费者不能接收消息。以前它工作。

但是对于其他交换和排队,消费者工作正常。

我试图清除队列并重新启动应用程序,没有帮助我。在队列中总是有4条未被存取的消息,并且休息已准备就绪。最后我删除了队列并交换了相应的路由键并重新创建了相同的路由。那么所有的工作很好..

任何人可以帮助我在这里发生了什么事情。为什么它没有奏效?

+0

这样的问题通常是由于线程停留在用户代码中的某处造成的。下一次,通过线程转储来查看线程正在做什么。 –

+0

感谢评论@GaryRussell ..听众的线程是cosumes 2-3消息,并停止收听。它的状态显示,它是可运行的,但表现得像死了一样:P ..下次我会照顾 –

回答

0

有时候,当消息处理发生某些故障时,如果我们抛出错误。它会在那里进行无限循环(队列 - >处理 - >队列> .....),如果方法保持抛出错误。

对于所有队列中的其他消息,通过增加批处理并发性,我们可以执行另一个。但unack消息将在那里。这将只会去如果有人停止消费..

现在我有一个问题,我可以设置限制重试未处理的消息处理。如果有人知道它,那么可以在这里帮助。

相关问题