如何处理涉及Spring消息/ JMS和数据库的事务

时间:2014-08-25 09:40:32

标签: spring hibernate transactions spring-jms

我有一个获取发票的方法,它创建XML并将该XML发送到JMS队列,然后将发票保存到DB,并更新状态,例如'发票'。下面是涉及Spring和Hibernate的伪代码。我的问题是:休眠失败是否会回滚Jms发送。如果JMS发送失败​​,我该如何回滚保存发票状态?这是分布式事务管理。这里涉及哪些交易案例。谢谢。

 @Transactional(propagation=Propagation.Required)    
 void processInvoices(invoice ){
           String xml = createXML(invoice);
           messageService.sendInvoice(xml );
           invoice.setStatus("invoiced");
           save(invoice);

  }

1 个答案:

答案 0 :(得分:0)

根据我的知识和我从你的问题中理解你想要同步hibernate和JMS事务,为此,你需要使用JTA来管理Hibernate和JMS之间的事务

阅读更多@ Spring synchronising Hibernate and JMS transactions