【发布时间】:2011-10-24 08:11:21
【问题描述】:
我偶尔会在几个不同的消息驱动 bean 中遇到以下 EJB 异常:
javax.ejb.EJBException: Failed to acquire the pool semaphore, strictTimeout=10000
这种行为与特定数据库出现问题的情况密切相关,从而增加了在 MDB 的 onMessage 函数中花费的时间。消息由 ActiveMQ 代理(版本 5.4.2)传递。 MDB 上的预取为 2000(每个会话 20 个会话 x 100 条消息)。
我的问题是一般性的。这里到底发生了什么?我知道如果 bean 池中没有实例来处理它,则已传递到运行 MDB 的服务器的消息将在 10 秒后超时,但是该消息首先是如何传递到服务器的?到目前为止,我的假设是 MDB 仅在不再有任何消息要处理时才向代理请求消息。他们只是在那个服务器端“存储桶”中等待太久吗?
还有其他人遇到过这种情况吗?调整预取/信号量超时的建议?
编辑:忘了说我使用的是 JBoss AS 5.1.0
【问题讨论】:
-
你用的是什么版本的jboss?
-
对不起,我的意思是指定:请参阅帖子中的编辑
标签: java jakarta-ee jboss ejb-3.0 activemq