在axon 3.x中进行显式回放

在axon 3.x中进行显式回放,axon,Axon,我最近一直在试用axon,读了很多东西。据我所知,事件源的概念表示,系统状态是从事件存储中重建的,而CQRS更新的视图模型可以通过命令端查询,因此不可查询 每次UI请求某些信息时,我都希望自己实现状态重建。我已经实现了事件处理器,并看到了它的回放功能。然而,我似乎找不到任何证据表明axon允许根据用户需求触发重播。因此,我在这里询问是否可以亲自触发重播来构建UI或axon所需的DAO,而axon只支持CQRS方式 当axon重播时(当删除令牌时),它是从快照表(如果实现的话)读取,然后从事件表读

我最近一直在试用axon,读了很多东西。据我所知,事件源的概念表示,系统状态是从事件存储中重建的,而CQRS更新的视图模型可以通过命令端查询,因此不可查询

  • 每次UI请求某些信息时,我都希望自己实现状态重建。我已经实现了事件处理器,并看到了它的回放功能。然而,我似乎找不到任何证据表明axon允许根据用户需求触发重播。因此,我在这里询问是否可以亲自触发重播来构建UI或axon所需的DAO,而axon只支持CQRS方式

  • 当axon重播时(当删除令牌时),它是从快照表(如果实现的话)读取,然后从事件表读取,还是总是从时间的开始开始读取

  • 如果您希望重建查询端,则手动删除令牌是当前的方法。 因此,如果您想触发重播,您必须添加一个组件来为您执行该操作。 这可能也是一个棘手的过程,因为您可能不希望任何其他方在重建视图时尝试访问您的视图。 请注意,为此,您确实需要将事件处理组件放入
    TrackingEventProcessor
    中,否则它将记不起它处理了多少事件,或者没有以
    TrackingToken
    的形式处理过多少事件

  • 快照表用于聚合以简化加载过程。当您将axon设置为使用
    (缓存)EventSourcingRepository
    时,它将首先基于快照加载聚合,然后为其余事件提供源。 因此,要回答第二个问题:当您丢弃令牌时,它将从时间开始从域事件条目表中读取


  • 希望这有帮助

    谢谢你,史蒂文。由于聚合加载是通过快照来实现的,因此我想利用这一点。我想做的与聚合类似,即从事件存储动态重建物化视图,而不是将其存储在数据库中(ES方式)。你知道这样一个实现的例子,或者你要提出的建议吗?嗯,我不太熟悉你想要的现成的例子,但是我想说的是,复制
    事件资源库
    的功能来满足你的需求听起来是最好的方法。我曾经制作了一个
    ReplayingRepository
    ,它基于
    aggregateIdentifier
    EventStore
    获取一个事件流,并根据
    EventListener
    重播这些事件。您可以创建自己的事件处理类,并使用
    注释eventlisteneradapter
    将其包装在
    事件侦听器中。但是,这不支持快照位!