【发布时间】:2015-04-12 09:18:08
【问题描述】:
我必须在 mysql 数据库中保存,然后通过 rabbitmq 向我的客户发送一个事件。
现在当推送到 RMq 时,如果由于某种原因失败,我需要回滚保存。应该是全有或全无,数据库中不能有未发生事件的数据。
本质上,
Begin Transaction
Save to db
Push to queue
If exception rollback else commit
End transaction
另一种方法
现在我只能在事务中进行保存操作。然后,如果失败,可以通过某种方式重试排队,但这会变得过于复杂。
在这方面有什么最佳做法吗?关于遵循哪种方法的任何建议。
PS:rmq 上的事件包含一些数据已更改的 id。客户端应为更改的 ID 执行 http get 以执行其操作。
【问题讨论】:
标签: java mysql sql database rabbitmq