这是情况。我有一个与我正在使用的事务管理器一起工作的应用程序。我需要做的是在某些阶段以 http 调用的形式将一些信息发布到另一个应用程序上。我想要发生的是只有在事务成功完成时才进行 http 调用。如果事务由于某种原因(某些异常)失败,则不应进行 http 调用。
关于如何做到这一点的任何建议?
有没有一种方法可以在我的代码过程中注册这些 http 调用,并且当事务管理器成功完成时,会进行这些 http 调用。
这是情况。我有一个与我正在使用的事务管理器一起工作的应用程序。我需要做的是在某些阶段以 http 调用的形式将一些信息发布到另一个应用程序上。我想要发生的是只有在事务成功完成时才进行 http 调用。如果事务由于某种原因(某些异常)失败,则不应进行 http 调用。
关于如何做到这一点的任何建议?
有没有一种方法可以在我的代码过程中注册这些 http 调用,并且当事务管理器成功完成时,会进行这些 http 调用。
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.
不要直接进行 http 调用,而是(在您的 JTA 事务中)向 JMS/XA 发布消息。这样,消息只有在事务提交时才可供消费者使用。
然后,添加一个接收消息并执行 http 调用的 HTTP 使用者。根据 JMS/XA 语义,它只会在发送方获取已提交事务的消息。
如果您想要免费的 JTA 事务管理器,请查看https://www.atomikos.com
最好的
盖伊赦免