如何在Spring Boot中配置EventTrackerStatusChangeListener

问题描述

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

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

我们只需配置EventTrackerStatuschangelistener即可,我可以对所需的所有回复更改做出反应。但是经过一番研究和尝试,我意识到无法为自动配置的trackingEventProcessors(通过包路径自动命名,或使用@ProcessingGroup自动命名)轻松配置它,不是吗?

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

解决方法

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

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

TrackingEventProcessorConfiguration

第一个EventProcessingConfigurer#registerTrackingEventProcessor( String,Function<Configuration,StreamableMessageSource<TrackedEventMessage<?>>>,TrackingEventProcessorConfiguration> ) 参数是处理器的名称(例如,您可以在事件处理组件上用String注释定义它)。第二个参数定义了有关TEP要使用的消息源。您可以使用@ProcessingGroup参数中提供的Configuration返回Function来检索已配置的常规事件存储。第三,您将提供您的TEP特定配置。