检测 Axoni Framework 是否已处理完事件存储中的历史事件

Detect if Axoni Framework has finished processing historic events from the Event Store

我正在使用利用内存令牌存储的 Axon 框架,这意味着每次我启动我的应用程序时,所有事件都从事件存储加载以重新创建我的内存模型。

这适用于我们的用例,但我们也希望有一个单独的进程来查询此模型以执行某些操作,但是,此线程应该仅在事件存储中的所有历史事件都已完成后才开始执行已玩过并更新了模型。

我可以天真地在启动线程之前设置一个延迟,以便为 AXon 提供足够的时间来加载历史事件并在 x 时间后成为最新的,但是随着事件的增长,x 是一个移动目标并且可能会x+1 在某个时候。

我很想知道 Axon 中是否有一种我可以使用的机制可以告诉我 Axon 在启动后的某个时间何时完成了查询模型中的所有事件的处理?也许最新的事件时间戳接近当前时间戳,或者是否有其他方法可以解决我应该研究的问题。

干杯

Axon Framework 在 Token Position 上公开了一些有意义的信息,可以帮助您实现这样的控制。

请参考此参考指南页面

https://docs.axoniq.io/reference-guide/operations-guide/production-considerations/monitoring-and-metrics#event-tracker-status

特别是可以使用isCaughtUp()方法

另请记下并跟踪此问题的进展https://github.com/AxonFramework/AxonFramework/issues/1338

目标是在 4.4 中实现它,将为您提供挂接到侦听器并添加您自己的逻辑的选项。

希望对您有所帮助,

科拉多。