Java MDB新线程正在调用onMessage,而上一个线程尚未完成
在JBOSS EAP6中,我有一个长时间运行的MDB线程正在侦听JMS队列。它收到一条文本消息,其中包含一个它应该处理的工作DB键(循环) 在执行过程中,我注意到新线程会产生新的MDB实例,从而导致不一致。我确实希望以编程方式或配置方式防止这种情况,而不改变性能。例如,在onMessage中检查工作正在进行。我无法更改数据库模型Java MDB新线程正在调用onMessage,而上一个线程尚未完成,java,jboss,jms,Java,Jboss,Jms,在JBOSS EAP6中,我有一个长时间运行的MDB线程正在侦听JMS队列。它收到一条文本消息,其中包含一个它应该处理的工作DB键(循环) 在执行过程中,我注意到新线程会产生新的MDB实例,从而导致不一致。我确实希望以编程方式或配置方式防止这种情况,而不改变性能。例如,在onMessage中检查工作正在进行。我无法更改数据库模型 因为我在一个VM中运行,所以我即将使用一个存储DB密钥的静态集。(我有点迫于时间的压力来解决这个问题)。问题是因为我忘记了指定事务超时。因此,默认超时似乎开始生效 通过
因为我在一个VM中运行,所以我即将使用一个存储DB密钥的静态集。(我有点迫于时间的压力来解决这个问题)。问题是因为我忘记了指定事务超时。因此,默认超时似乎开始生效 通过添加事务超时解决了此问题:
@ActivationConfigProperty( propertyName = "transactionTimeout", propertyValue = "10800" )
一个想法可能是使用单例bean,在这里我可以为消息中的DB密钥获取锁。。