Spring Integration在同一bean中调用服务激活器

时间:2019-07-19 00:12:21

标签: spring spring-integration spring-dsl

我正在使用Spring Integration dsl创建一个管道,以丰富和持久化从kafka到DB的事件。可以有多种事件类型,我们已经创建了一个事件接口和相应的实现类。

事件接口具有方法定义-parse(),process(),persist() 实现类具有实现

管道-

    @Bean
    public IntegrationFlow  baseEventFlow() {
                return IntegrationFlows.from(Kafka.messageDrivenChannelAdapter(kafkaListenerContainer))
                        .wireTap(WIRE_TAP_CHNL) // Log the raw messaged
                        .handle(eventDispatch, "preProcess") 
                        .handle(eventDispatch, "dispatch") //identify the implementation class from the event name
                        .channel("DispatchEventChannel")
                        .get();
    }

    @Bean
    public IntegrationFlow dispatchEventFlow() {

        return IntegrationFlows
                .from("DispatchEventChannel").handle(m -> {
                    ((Event)m.getPayload()).parse();
                    ((Event)m.getPayload()).validate();
                }).get();
    }


要求是- 1.从kafka获取事件 2.确定事件类型 3.我使用了策略模式从事件类型中识别具体的事件类,并将其推送到通道-DispatchEventChannel 4.第二个管道接收事件类,并在该类上调用具体的实现方法

我不确定是否可以使用上述管道来调用具体事件类。 主要目的是根据事件在运行时识别实现类,然后调用具体类的相应方法

请提出建议

0 个答案:

没有答案