我正在使用Spring Integration,Java DSL(1.1.3版)
我的org.springframework.integration.dsl.IntegrationFlow
定义如下
return IntegrationFlows.from(messageProducerSpec)
.handle(handler)
.handle(aggregator)
.handle(endpoint)
.get();
}
messageProducerSpec
是org.springframework.integration.dsl.amqp.AmqpBaseInboundChannelAdapterSpec
我希望我的集成流能够使用来自两个单独messageProducerSpecs
的消息(两个单独的SimpleMessageListenerContainers
,每个使用不同的ConnectionFactory
)。如何从多个messageProducerSpec构造integrationFlow?我看不到任何集成组件能够使用来自多个源的消息。
答案 0 :(得分:8)
在Spring Integration中没有理由这样做。
您始终可以将不同的端点输出到同一个MessageChannel
。
因此,对于所有IntegrationFlow
,您应该有几个简单messageProducerSpec
s并使用相同的频道完成它们,其中也应该是将从该频道收听的主流:
@Bean
public IntegrationFlow producer1() {
return IntegrationFlows.from(messageProducerSpec1)
.channel("input")
.get();
}
@Bean
public IntegrationFlow producer2() {
return IntegrationFlows.from(messageProducerSpec2)
.channel("input")
.get();
}
...
@Bean
public IntegrationFlow mainFlow() {
return IntegrationFlows.from("input")
.handle(handler)
.handle(aggregator)
.handle(endpoint)
.get();
}