gpt4 book ai didi

java - 使用 Axon 4 与某些 "aggregateIdentifier"相关的 Axon Replay TrackingEvent

转载 作者:行者123 更新时间:2023-12-02 09:13:31 27 4
gpt4 key购买 nike

我们正在使用 Axon 4 的 CQRS 和事件溯源。

我们有以下场景。

域书

  1. 操作 - 使用 Axon CRQS 和事件源流(命令 - 聚合 - 事件)在数据库中创建新书籍
  2. 操作 - 使用 Axon CRQS 和事件源流程(命令 - 聚合 - 事件)将已创建的 Book 更新到数据库
  3. 在 Axon 事件存储中,上面解释的这两个命令(createCommand 和 updateCommand)具有相同的“aggregateIdentifier”id,它们位于同一聚合树中,因为我们正在处理相同的聚合根。
  4. 在 Axon 事件存储中,此命令具有不同的“aggregateSequenceNumber”,这也是正常且预期的

此时我们正在通过processingGroup重放事件,这工作正常,现在我们想要对事件进行更复杂的重放

问题

我们如何创建仅重播具有某些“aggregateIdentifier”id(一个聚合树)的事件的resetTokens,这意味着我们只想重播与某本书(聚合树)而不是所有书籍相关的事件?

Axon 4 支持此功能吗?

最佳答案

如果您愿意,您可以使用 Axon 创建此功能,但它需要一些使用 Axon 框架细节的自定义代码。

首先,这不是重播,因为重播是从事件处理器级别描述的。重放事件处理器将根据给定的 token 从某个时间点开始读取整个事件流。

您想要的是重播过滤给定的聚合标识符。

根据您评论中的描述,这感觉就像用户/服务对您的应用程序进行的零星查询。

处理此查询后,您需要打开事件流,过滤事件,然后使用剩余的流来更新所需的查询模型。

从实现的角度来看,我会使用 AnnotationEventHandlerAdapter 。这个类应该被赋予 annotated event listener ,这应该是您想要临时创建并返回的查询模型。

随后,AnnotationEventHandlerAdapter#handle(EventMessage<?>)应该使用过滤后的事件流调用方法。一旦到达流的末尾,您的查询模型就会是最新的。

那么,回到你的问题:

Is this functionality supported by the Axon 4 ?

答案是肯定的,但这需要您做一些方便的工作。

关于java - 使用 Axon 4 与某些 "aggregateIdentifier"相关的 Axon Replay TrackingEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com