我有一个基于Atomikos Transaction Manager的带有JTA的简单Spring引导应用程序。它使用队列中的消息并记录它们。问题是,在第7条传入消息之后,队列中的其余消息将退出队列,但不会进行处理。我意识到这种性能是循环的,我的意思是:
- 在队列中插入了10条消息
- 已处理并退出队列的第一条消息
- 已处理并退出队列的第二条消息
- 已处理并退出队列的第三条消息
- 已处理并退出第4条消息的队列
- 已处理并退出第5条消息的队列
- 已处理并退出第6条消息的队列
- 已处理第7条消息,并将第7条、第8条、第9条和第10条消息退出队列
- 在队列中插入了其他10条消息
- 已处理并退出第11条消息的队列
- 已处理并退出队列的第12条消息
- 已处理并退出第13条消息的队列
- 已处理并退出第14条消息的队列
- 已处理并退出第15条消息的队列
- 已处理并退出队列的第16条消息
- 已处理第17条消息,并将第17条、第18条、第19条和第20条消息退出队列
此外,我意识到在没有启用事务管理器的情况下,它会处理并消耗队列中的所有消息。
有没有任何错误或配置让我忘记了这一点?
您可以在上找到完整的代码:https://github.com/PedroRamirezTOR/spring-jta-amq.git
谢谢Justin!最后,我准备了这个例子来轻松测试这个问题,我意识到只有当我们使用ActiveMQ控制台插入消息时才会出现这种情况。我准备了一个RESTapi,在一个事务中插入许多消息,所有这些消息都被消耗并退出队列。我认为这可能是一个ActiveMQ web控制台错误。
如果有人感兴趣,可以从https://github.com/PedroRamirezTOR/spring-jta-amq.git