Java 玻璃鱼&x2B;ActiveMQ MDB以120秒的延迟处理消息

Java 玻璃鱼&x2B;ActiveMQ MDB以120秒的延迟处理消息,java,glassfish,jms,activemq,Java,Glassfish,Jms,Activemq,我已将MDB配置为侦听外部ActiveMQ代理上的队列。它工作正常,但MDB从队列中获取消息,仅在延迟2分钟后才开始处理。我没有配置任何超时,但看起来确实有一种属性延迟了处理。有人能告诉我如何调整这个延迟并切换到即时处理吗?这是Glassfish中一个很长时间的老错误 有一个错误记录在这里,但现在这个网站也关闭了。 添加System.exit(0)(在finally块中),它关闭所有线程 try{ code ... }finally{ System.exit(0) ; } 您还可以启用调

我已将MDB配置为侦听外部ActiveMQ代理上的队列。它工作正常,但MDB从队列中获取消息,仅在延迟2分钟后才开始处理。我没有配置任何超时,但看起来确实有一种属性延迟了处理。有人能告诉我如何调整这个延迟并切换到即时处理吗?

这是Glassfish中一个很长时间的老错误

有一个错误记录在这里,但现在这个网站也关闭了。

添加System.exit(0)(在finally块中),它关闭所有线程

try{
code ...

}finally{
 System.exit(0) ;
}
您还可以启用调试:

1) 启用jstack以查看mdb线程池中有多少线程 使用

2) 尝试启用工作管理器和线程池的监视统计信息:

我遇到了完全相同的问题。完成发送到队列需要120秒。我只在Glassfish 4.1.1(Centos 6)上看到了这一点,但Glassfish 4.1(Windows 10)还可以。您找到解决方案了吗?如果您提供activemq.xml,可能会更有帮助。我也有类似的问题,但环境与您的略有不同(我们使用JBoss EAP 7 instad Glassfish)。然而,我们所经历的延迟在某种程度上是可变的。我们通过指定“pendingMessageLimitStrategy”解决了这个问题。看一看,也许它会让你更接近。显示你的配置,以及调用activemq的代码可能会帮助每个人。我曾尝试使用JVM报告生成线程转储,但无法找出任何可疑之处,但它确实似乎是一个glassfish错误,因为在恢复到其他glassfish版本4.1时(除了4.1.1),这个问题不存在。我认为这是答案。Thanks Khan