Transactions Atomikos事务测试jms

Transactions Atomikos事务测试jms,transactions,jms,spring-integration,atomikos,Transactions,Jms,Spring Integration,Atomikos,我有一个关于JMS的问题。它们从事件数据库中检索,并通过ActiveMQ代理发送到ESB 发送JMS时,会在事件数据库中将其标记为已发送。这个过程应该是事务性的 但是,我注意到som JMS被标记为已发送,而它们没有被接收。 我已经研究过这个问题,并注意到没有实现分布式事务,这导致了JMS的丢失。它们被标记为已在事件数据库中发送,但它们发送到的ESB抛出了一个错误,并且未收到JMS 此时数据库事务应该已回滚,但事实并非如此,因为这两个事务都未被管理 我实现了Atomikos事务协调器来处理这两个

我有一个关于JMS的问题。它们从事件数据库中检索,并通过ActiveMQ代理发送到ESB

发送JMS时,会在事件数据库中将其标记为已发送。这个过程应该是事务性的

但是,我注意到som JMS被标记为已发送,而它们没有被接收。 我已经研究过这个问题,并注意到没有实现分布式事务,这导致了JMS的丢失。它们被标记为已在事件数据库中发送,但它们发送到的ESB抛出了一个错误,并且未收到JMS

此时数据库事务应该已回滚,但事实并非如此,因为这两个事务都未被管理

我实现了Atomikos事务协调器来处理这两个事务。现在我想测试我的新配置

我听说有一种方法可以测试这两种事务处理,但我没有发现任何示例。你有什么想法或例子吗

技术:Spring集成、ActiveMQ、Atomikos

请参阅。同样的技术也适用

访问真实数据库的测试中的一个常见问题是它们对持久性存储状态的影响。即使在使用开发数据库时,对状态的更改也可能会影响将来的测试。此外,许多业务 — 例如插入或修改持久数据 — 无法在事务外部执行(或验证)

TestContext框架解决了这个问题。默认情况下,框架将为每个测试创建并回滚一个事务。您只需编写可以假定存在事务的代码。如果在测试中调用事务代理对象,则它们将根据其配置的事务语义正确运行。此外,如果测试方法在为测试管理的事务中运行时删除了所选表的内容,则默认情况下事务将回滚,并且数据库将返回到执行测试之前的状态。通过在测试的应用程序上下文中定义的PlatformTransactionManager bean向测试提供事务支持

如果您希望提交事务 — 不寻常,但在需要特定测试填充或修改数据库时偶尔有用 — 可以通过@commit注释指示TestContext框架使事务提交,而不是回滚

请参阅使用TestContext框架的事务管理