来自 AxonDB 事件存储的事件没有到达我的 TrackingEventProcessor

Events from AxonDB eventstore do not arrive in my TrackingEventProcessor

我目前正在尝试从 AxonDB 事件存储中读取所有事件并将它们导出到 CSV 文件。选择的方法是在附加到 AxonDB 服务器的 Spring 启动应用程序中创建一个事件处理程序。将 TrackingEventProcessor 与 InMemoryTokenStore(默认)一起使用 我希望每次启动这个小应用程序时都能从事件存储中读取所有事件。

不幸的是,我没有在我的 TrackingEventProcessor 中收到来自 AxonDB 客户端的事件,这已经困扰我几个小时了。我进入了野兽的肚子,看到了以下行为,我想讨论一下:

我已经苦苦思索了一段时间,觉得自己走到了死胡同。我没有收到任何错误消息或异常。读取事件似乎有效,已通过 AxonDBEventStore 日志记录确认。但在此之后,EventBuffer 保持为空,所以我的处理器甚至都不会检查它是否应该处理它所呈现的事件。因此,我想我的处理器的名称不是这里的问题。我尝试了几个处理器名称(与事件中的数据匹配)但没有任何运气。反序列化似乎确实有效,因为我昨天在调试期间在某处发现了一个反序列化事件(虽然不记得在哪里......)。它看起来和我预期的一样。

有谁知道这可能是什么问题?

您能否尝试将 AxonDB 客户端升级到 1.3.1 版,因为 1.3 版在没有定义上行转换程序时存在问题。

如果有帮助,请告诉我。

此致,

马克·盖蒂尔

您提到您有两个不同的应用程序。在那些共享核心 API(命令、事件和查询)的应用程序之间是否有一个通用模块?如果万一情况并非如此,您的事件的完全限定名称是否匹配(一个在发布应用程序中,一个在消费应用程序中)?如果事件的完全限定名称不匹配,跟踪事件处理器将无法拾取它。

如果这对你有帮助,请告诉我!

干杯, 米兰.

不幸的是,由于找到了另一种解决问题的方法,我一直无法完成这款软件。我怀疑事件没有出现在 TrackingEventProcessor 中,因为我的项目中没有事件的 POJO 表示,就像 Milan 建议的那样。

我的初衷是创建一个通用工具,通过 Spring 应用程序将 GenericEventMessage 重写为 CSV,而不是为我正在处理的项目编写特定工具。这可能是不可能的,TrackingEventProcessor 需要类路径上的 POJO 来生成 GenericEventMessage。我之前没有想到这一点。