【问题标题】:Consumer not picking up messages from queue消费者没有从队列中获取消息
【发布时间】:2014-10-28 13:18:51
【问题描述】:

我有一个包含几条骆驼路线的 osgi 包。现在一切正常一段时间。过了一会儿,其中一条路线停止接收消息。消息被发送到队列,但路由不接收它。我可以看到待处理消息的数量在增加,并且队列中有一个消费者,但没有任何反应。重新启动捆绑包时,一切正常。任何想法为什么会发生这种情况?捆绑包中的其他路线工作正常,而有问题的路线则不行。

【问题讨论】:

  • 是否有消息发送(dispatch cont)给消费者?或者,如果您可以通过 JMX 查看路线,请查看是否有任何“飞行中”消息。
  • 停止工作的路由是否偶然进行了 HTTP 调用?
  • 你检查日志看JMS连接是否断开?
  • 无法通过 JMS 查看路由 - 出现网络问题。没有路由发送到 JMS 队列并在执行操作之前等待响应。 JMS 连接很好。队列有无限超时,因此当队列不返回任何内容时,线程会等待它并且不再处理任何消息。将超时更改为一分钟左右会起作用,因为它会超时。但不确定为什么超时异常没有从我发送消息的 Q 传播回调用者。

标签: osgi apache-camel activemq jbossfuse


【解决方案1】:

听起来你的路由只有 1 个消费者线程,它只是被阻止完成和出队更多消息(直到你杀死/重新启动它)......

使用线程转储来确认和识别罪魁祸首 API...可能是缓慢的进程或外部资源调用(数据库、HTTP、网络问题等)

【讨论】:

  • 确实只有一个消费者。
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多