0

这是情况。我有一个与我正在使用的事务管理器一起工作的应用程序。我需要做的是在某些阶段以 http 调用的形式将一些信息发布到另一个应用程序上。我想要发生的是只有在事务成功完成时才进行 http 调用。如果事务由于某种原因(某些异常)失败,则不应进行 http 调用。

关于如何做到这一点的任何建议?

有没有一种方法可以在我的代码过程中注册这些 http 调用,并且当事务管理器成功完成时,会进行这些 http 调用。

4

2 回答 2

0

Spring provides a clean way of handling callback events via TransactionSynchronization. This registers hooks for various transaction events (After commit, On completion etc).

Here is a related post which address your problem. Here is another link.

于 2013-05-02T10:23:27.173 回答
0

不要直接进行 http 调用,而是(在您的 JTA 事务中)向 JMS/XA 发布消息。这样,消息只有在事务提交时才可供消费者使用。

然后,添加一个接收消息并执行 http 调用的 HTTP 使用者。根据 JMS/XA 语义,它只会在发送方获取已提交事务的消息。

如果您想要免费的 JTA 事务管理器,请查看https://www.atomikos.com

最好的

盖伊赦免

于 2018-11-28T16:51:51.500 回答