问题描述
我们正在使用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特定配置。