如何从两个MessageProducerSpec创建Spring Integration Flow?

时间:2016-09-19 16:13:56

标签: java spring spring-integration

我正在使用Spring Integration,Java DSL(1.1.3版) 我的org.springframework.integration.dsl.IntegrationFlow定义如下

 return IntegrationFlows.from(messageProducerSpec) 
            .handle(handler) 
            .handle(aggregator) 
            .handle(endpoint) 
            .get();
    }

messageProducerSpecorg.springframework.integration.dsl.amqp.AmqpBaseInboundChannelAdapterSpec

的实例

我希望我的集成流能够使用来自两个单独messageProducerSpecs的消息(两个单独的SimpleMessageListenerContainers,每个使用不同的ConnectionFactory)。如何从多个messageProducerSpec构造integrationFlow?我看不到任何集成组件能够使用来自多个源的消息。

1 个答案:

答案 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();
}