【发布时间】:2019-03-06 10:08:57
【问题描述】:
我目前在 Axon 中使用 SubscribingEvent 处理器。使用它,所有内容都在单线程中执行(因为我想在单线程中执行命令并将事件应用于投影)确保所有内容都保存到数据库或回滚。
如果我们使用 TrackingEvent 处理器,如果该命令在 Aggregate 中成功执行并且 Aggregate 发出的事件被保存到 DB,但应用程序在 Projections 完成之前失败(这意味着没有保存到 DB),会发生什么?重新启动后的应用程序会继续投射此事件吗?
在我的情况下,我正在对 REST 调用进行投影,所以我想使用 SubscribingEvent 处理器对我来说是有意义的(所以要么一切正常,要么什么都没有)。如果我使用 TrackingEvent 处理器,并且应用程序在保存和投影之间崩溃 - 我会有不一致的状态。即使投影在下次启动时重新启动(我假设是这样),客户端也会再次发送相同的命令(认为它失败了),但是如果它第二次收到相同的命令会发生什么?
【问题讨论】:
标签: java domain-driven-design cqrs event-sourcing axon