在JBOSS EAP6中,我有一个长时间运行的MDB线程监听JMS队列。它收到一条文本消息,其中包含应处理的数据键(循环)。
在执行期间,我注意到新线程会产生新的MDB实例,从而导致不一致。我确实希望以编程方式或以不改变性能的配置方式来防止这种情况。因此,例如在onMessage中检查工作是否正在进行中。我无法更改数据库模型。
由于我在单个虚拟机中运行,因此我正处于使用存储数据库密钥的静态集的边缘(最后的手段)。 (我有点时间压力要解决这个问题。)
答案 0 :(得分:0)
问题是由于我忘记了指定事务超时的事实。因此,默认超时似乎开始了。
通过添加交易时间来解决问题:
@ActivationConfigProperty( propertyName = "transactionTimeout", propertyValue = "10800" )