Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create Spring Integration Flow from two MessageProducerSpec?

I am using Spring Integration, Java DSL (release 1.1.3) I have my org.springframework.integration.dsl.IntegrationFlow defined as follows

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

messageProducerSpec is instance of org.springframework.integration.dsl.amqp.AmqpBaseInboundChannelAdapterSpec

I would like my integration flow to consume messages from TWO separate messageProducerSpecs (two separate SimpleMessageListenerContainers, each using diffrent ConnectionFactory). How is it possible to construct integrationFlow from more than one messageProducerSpec? I see no integration component that is able to consume messages from multiple sources.

like image 765
Bartosz Bilicki Avatar asked Jan 05 '23 08:01

Bartosz Bilicki


1 Answers

There is no reason to do that in Spring Integration.

You always can output different endpoints to the same MessageChannel.

Therefore you should have several simple IntegrationFlows for all those messageProducerSpec and finish them with the same channel, where also should be the main flow which will listen from that 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();
} 
like image 159
Artem Bilan Avatar answered Jan 13 '23 10:01

Artem Bilan