在我的Spring Boot应用程序中,我有以下场景:
如果在任何阶段发生异常,我希望确保消息不会丢失并放在退出队列中。
在启用XA的JMS连接工厂和启用XA的Oracle数据库驱动程序之间是否需要XA事务?或者,将 DefaultMessageListenerContainer 与 sessionTransacted 标志设置为 true 一起使用就足够了吗?
如果第二个是正确答案,那么使用XA交易会有什么好处?
答案 0 :(得分:1)
您可以通过使用Spring来同步两个事务并编写应用程序以处理重复传递的(小)可能性(当数据库提交但JMS回滚时,例如,由于之间的连接丢失),可以避免XA DB和JMS提交)。我建议你阅读Spring团队的Dave Syer的优秀Distributed transactions in Spring, with and without XA。
如果javaworld将来某个时候移动该链接,请点击syer xa spring
,您应该找到它。