我正在使用 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?我没有看到能够使用来自多个来源的消息的集成组件。

最佳答案

在 Spring Integration 中没有理由这样做。

您始终可以将不同的端点输出到相同的 MessageChannel

因此,您应该为所有这些 IntegrationFlow 设置几个简单的 messageProducerSpec 并使用相同的 channel 完成它们,其中也应该是将从该 channel 监听的主要流程:

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

10-07 16:13