簡體   English   中英

Axon - 事件處理程序攔截器配置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM