2015-07-13 44 views
0

您好,谁能帮助我解决如何在春天处理多笔交易。例如,我正试图在我的应用程序中注册一个用户。我从我的UI层收集数据。现在我需要执行以下活动如何在春季处理多笔交易

  1. 将数据保存到数据库中的多个表中。
  2. 需要一个电子邮件&手机短信发送到包含用户名和密码,
  3. 用户发送电子邮件通知到管理员
  4. 更新一些其他的表值。

现在如果在上述4个步骤中出现问题,应用程序应该能够恢复所有内容并显示错误消息。

如何在春季处理这些任务?

+0

太宽了,到目前为止你尝试过了什么? – Raptor

+0

欢迎来到stackoverflow。请向我们展示一些你的工作,当你被困住时,社区将帮助你,但是这里没有人会完成你的全部工作。 – RicoRicochet

+0

*“现在,如果在4个步骤以上出现问题,应用程序应该能够恢复一切。”*在单个事务中运行而不是多个事务? – BalusC

回答

0

你需要用你的数据库修改与@Transactional注释服务和改变什么,你刚才说的顺序。

 //This two step in the same service with @Transactional annotation. 
     1. save the data into multiple tables in database. 
     2. update some other table value. 
     //Once you save on database and everything it´s ok you can send emails without any problem since you dont have to rollback. 
     3. send an email & sms to the user containing username and password 
     4. send an notification email to admin 
0

有没有办法治疗电子邮件发送作为一个事务资源一样数据库!电子邮件发送完毕后,很难再回复。在这个领域里,只有基础架构缺失,它提供了数据库所能提供的所有方便的事务提交和回滚功能。

你最好的解决办法是发送你的电子邮件你的数据库更新已成功提交。您可以使用Spring的DataSourceTransaction Manager和@Transactiondoing this with Spring的其他“两千”方式之一进行数据库更新。

做的交易后交付发送的邮件,检查this question。就个人而言,我赞成这个想法使用事务提交钩后,发送“邮件触发的消息”,以一个独立的消息队列HornetQ。这样,您就可以使用队列的即开即用故障转移机制来确保您的电子邮件一定能够交付。