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

时间:2020-06-24 13:17:51

标签: axon

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

这对于我们的用例来说很好用,但是我们还希望有一个单独的过程来查询该模型以执行某些操作,但是,该线程仅应在事件存储库中的所有历史事件播放完毕后才开始执行并更新了模型。

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

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

欢呼

1 个答案:

答案 0 :(得分:2)

Axon Framework公开了有关令牌位置的一些有意义的信息,可以帮助您实现这样的控件。

请参阅此参考指南页面

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实现该功能,将使您可以选择挂接到侦听器并添加自己的逻辑。

希望获得帮助,

Corrado。