我正在使用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.第二个管道接收事件类,并在该类上调用具体的实现方法
我不确定是否可以使用上述管道来调用具体事件类。 主要目的是根据事件在运行时识别实现类,然后调用具体类的相应方法
请提出建议