복붙노트

[SPRING] 두 개의 MessageProducerSpec에서 Spring Integration Flow를 생성하는 방법은 무엇입니까?

SPRING

두 개의 MessageProducerSpec에서 Spring Integration Flow를 생성하는 방법은 무엇입니까?

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를 어떻게 구성 할 수 있습니까? 여러 소스에서 메시지를 사용할 수있는 통합 구성 요소가 없습니다.

해결법

  1. ==============================

    1.Spring Integration에서 그렇게 할 이유는 없습니다.

    Spring Integration에서 그렇게 할 이유는 없습니다.

    동일한 MessageChannel에 항상 다른 엔드 포인트를 출력 할 수 있습니다.

    따라서 모든 messageProducerSpec에 대해 몇 가지 간단한 IntegrationFlow가 있어야하며 동일한 채널에서 완료해야합니다. 또한 해당 채널에서 수신 대기하는 기본 흐름이어야합니다.

    @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();
    } 
    
  2. from https://stackoverflow.com/questions/39577608/how-to-create-spring-integration-flow-from-two-messageproducerspec by cc-by-sa and MIT license