如何在 Spring Boot 中配置 EventTrackerStatusChangeListener

How to configurate EventTrackerStatusChangeListener in Spring Boot

我们正在使用 Spring Boot + Axon Framework + Mongo(作为事件源,cqrs 视图) 现在我必须明白,我所有活动的 回复 都已完成。正如我在文档中看到的:

https://docs.axoniq.io/reference-guide/axon-framework/monitoring-and-metrics#event-tracker-status 可以通过 TrackingEventProcessor 的 TrackingEventProcessorConfiguration 配置 EventTrackerStatusChangeListener

我们可以只配置 EventTrackerStatusChangeListener 并且它,我可以对我需要的所有 reply 更改做出反应。但是经过一些研究和尝试,我意识到它不能很容易地配置为自动配置的 trackingEventProcessors(由包路径自动命名,或使用@ProcessingGroup)不是吗?

我的问题是:我可以将 EventTrackerStatusChangeListener 配置为将其用于所有自动配置的 trackingEventProcessor 吗?如何配置?如果不是,最好的方法是什么?

EventTrackerStatusChangeListener 只能通过 TrackingEventProcessorConfiguration class 注册 TrackingEventProcessor (TEP)。 如果要定义默认侦听器,当前(Axon 4.4.2)必须定义要使用的默认 TrackingEventProcessorConfiguration

这可以通过使用EventProcessingConfigurer#registerTrackingEventProcessorConfiguration方法来实现。 请注意,这意味着 所有 您的 TEP 将使用相同的 TrackingEventProcessorConfiguration。如果要为每个 TEP 定义一个特定的 TrackingEventProcessorConfiguration,则必须为每个要定义的 TEP 使用以下函数:

EventProcessingConfigurer#registerTrackingEventProcessor(
    String, 
    Function<Configuration, StreamableMessageSource<TrackedEventMessage<?>>>,
    Function<Configuration, TrackingEventProcessorConfiguration>
)

第一个 String 参数是处理器的名称(例如,您可以在事件处理组件上使用 @ProcessingGroup 注释定义)。第二个参数定义了所讨论的 TEP 使用的消息源。您可以使用 Function 参数中给定的 Configuration 到 return Configuration#eventStore 来检索配置的通用事件存储。第三,您将提供您的 TEP 特定配置。