Osgi 消费者未从队列中拾取邮件

Osgi 消费者未从队列中拾取邮件,osgi,apache-camel,activemq,jbossfuse,Osgi,Apache Camel,Activemq,Jbossfuse,我有一个osgi包,它有一些驼峰路线。现在一切都好了一段时间。过了一会儿,其中一条路由停止接收消息。消息会被发送到队列,但路由不会接收它。我可以看到挂起消息的数量在增长,队列中有一个消费者,但什么也没有发生。重新启动捆绑包后,一切又恢复正常。你知道为什么会发生这种情况吗?捆绑包中的其他路由可以正常工作,而有问题的路由则不行。听起来您的路由只有一个使用者线程,它只是被阻止完成和退出更多消息(直到您杀死/重新启动它) 使用线程转储来确认和识别罪魁祸首API…可能是进程缓慢或外部资源调用(数据库、HT

我有一个osgi包,它有一些驼峰路线。现在一切都好了一段时间。过了一会儿,其中一条路由停止接收消息。消息会被发送到队列,但路由不会接收它。我可以看到挂起消息的数量在增长,队列中有一个消费者,但什么也没有发生。重新启动捆绑包后,一切又恢复正常。你知道为什么会发生这种情况吗?捆绑包中的其他路由可以正常工作,而有问题的路由则不行。

听起来您的路由只有一个使用者线程,它只是被阻止完成和退出更多消息(直到您杀死/重新启动它)


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

是否向使用者发送了消息(dispatch cont)?或者,如果您可以通过JMX查看路由,请查看是否存在任何“正在运行”的消息。停止工作的路由是否偶然进行HTTP调用?是否检查日志以查看JMS连接是否中断?无法通过JMS查看路由-存在网络问题。没有路由发送到JMS队列并在执行操作之前等待响应。JMS连接很好。在队列上有一个无限制的超时,这样当队列不返回任何内容时,线程将等待它,并且不再处理其他消息。将超时更改为分钟左右是有效的,因为它超时了。但不确定为什么timeoutexception没有从我发送消息的Q传播回调用者。事实上,它只有一个使用者。