MDB新线程在前一个线程未完成时调用onMessage

时间:2017-06-30 17:58:13

标签: java jboss jms

在JBOSS EAP6中,我有一个长时间运行的MDB线程监听JMS队列。它收到一条文本消息,其中包含应处理的数据键(循环)。

在执行期间,我注意到新线程会产生新的MDB实例,从而导致不一致。我确实希望以编程方式或以不改变性能的配置方式来防止这种情况。因此,例如在onMessage中检查工作是否正在进行中。我无法更改数据库模型。

由于我在单个虚拟机中运行,因此我正处于使用存储数据库密钥的静态集的边缘(最后的手段)。 (我有点时间压力要解决这个问题。)

1 个答案:

答案 0 :(得分:0)

问题是由于我忘记了指定事务超时的事实。因此,默认超时似乎开始了。

通过添加交易时间来解决问题:

 @ActivationConfigProperty( propertyName = "transactionTimeout", propertyValue = "10800" )