[英]Axon - Event Handler Interceptor configuration
我正在嘗試定義我的“事件處理程序攔截器”,我按照官方文檔here的說明進行操作,但出現以下錯誤:
org.springframework.beans.factory.BeanCreationException: error when creating the bean with name 'configureEventProcessing' defined in the resource path class [com / prog / boot / config / EventProcessorConfiguration.class]: invalid factory method 'configureEventProcessing': must have an empty non-return type!
我當前的配置調用:
@Configuration
public class EventProcessorConfiguration {
@Bean
public void configureEventProcessing(Configurer configurer) {
configurer.eventProcessing()
.registerTrackingEventProcessor("my-tracking-processor")
.registerHandlerInterceptor("my-tracking-processor",
configuration -> new MyEventHandlerInterceptor());
}
}
我的事件MessageHandlerInterceptor
實現:
public class MyEventHandlerInterceptor implements MessageHandlerInterceptor<EventMessage<?>> {
@Override
public Object handle(UnitOfWork<? extends EventMessage<?>> unitOfWork, InterceptorChain interceptorChain)
throws Exception {
EventMessage<?> event = unitOfWork.getMessage();
String userId = Optional.ofNullable(event.getMetaData().get("userId")).map(uId -> (String) uId)
.orElseThrow(Exception::new);
if ("axonUser".equals(userId)) {
return interceptorChain.proceed();
}
return null;
}
}
我究竟做錯了什么?
謝謝!
幸運的是,這個問題相當簡單(並且與 Axon 沒有直接關系)。
問題是您應該在configureEventProcessing(Configurer)
方法上使用@Autowired
而不是@Bean
。 方法上的@Bean
注釋將使其成為“Bean 創建方法”,而您只想綁定到自動配置以“進一步配置”事件處理器。
微調的最后說明,您可以使用EventProcessingConfigurer
作為參數而不是Configurer#eventProcessing
調用。 這會稍微縮短您的代碼。
更新
提供的配置將按預期進行自動接線調整工作。 當然,它確實希望出現一個事件處理組件,它是""my-tracking-processor"
處理組的一部分。
如果該處理組中不存在事件處理組件,則不會將任何事件傳遞給它,因此不會通過MessageHandlerInterceptor
推送任何事件。
為事件處理組件指定處理組的一種快速簡便的方法是在類級別添加@ProcessingGroup
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.