【问题标题】:Append events to eventstore将事件附加到事件存储
【发布时间】:2019-11-15 18:43:28
【问题描述】:

我们正在使用 3.4.2 版的 axon 框架,并在我们的代码中发现了一个错误。该错误与未发布的缺失事件有关。解决方案是修复代码,但这不会修复事件存储和视图。

我的问题是如何解决这个问题?我们考虑将事件附加到事件存储(我们使用 JDBC 事件存储),但是如果没有正确的数据,新事件将不会被处理。最好的办法是在应用程序中通过在 axon 中发布事件并让 axon 处理所有细节来执行此操作,但这是一次性的更正操作。

有没有办法将一次性事件“注入”到轴突中?

【问题讨论】:

  • 没有直接的 Axon 经验,我的理解,在一般情况下,这将是一个特定的更正命令和事件,例如 PulledSomeMissingOrderInfoFromShopify(例如,我们忘记捕获客户远程 IP 和用户代理和 isMobile),。 . 生成的事件可以从以前的数据中丰富(所有其他信息已经在原始事件 ShopifyOrderCreated 的读取层中),并且事件处理可以重写视图,在事件总线上发布一些东西,或者任何需要做的事情.. 等等..

标签: cqrs axon


【解决方案1】:

Matt 分享的评论在概念上是你应该做的。 因此,要解决您无意中引入的问题,您应该生成一个补偿操作,也就是一个命令。此命令将在您的命令模型中处理,将验证模型的状态并发布所需的事件。

补充,我假设你的这个事件应该来自一个聚合,对吗? 用 Axon 术语来说,这意味着您要发布一个域事件,而不是一个常规的事件

虽然您可以在EventBus 上发布事件或直接存储在EventStore 中,但通过该过程制作这些域事件 是相当复杂的。 因此,当我开始时以及马特弗里曼对您的问题的评论时,补偿行动将是要走的路,无论有没有 Axon。


最后一点,要知道 Axon 4.2 已经发布了一段时间了。尽管 Axon 3 仍将进行错误修复,但这些都在去年没有发生。简而言之,Axon 3 没有积极的开发。迁移到更新的版本将对您的项目有利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多