복붙노트

[SPRING] 실제로 각 어댑터를 작성하지 않고 메시지 구동 어댑터 목록을 연결하는 방법은 무엇입니까?

SPRING

실제로 각 어댑터를 작성하지 않고 메시지 구동 어댑터 목록을 연결하는 방법은 무엇입니까?

안녕하세요. 12 개의 대기열을 들으셔야합니다. 동일한 처리 흐름을 통해 들어오는 모든 메시지를 더 많게 적게 넣으십시오. 각 큐에 연결되는 메시지 구동 채널 어댑터가 있습니다.

<jms:message-driven-channel-adapter id="101InstructionQueue1In" 
                                  channel="xmedInitiation1PrimaryChannel"                                    
                                  auto-startup="true"
                                  connection-factory="${XMED.1.PRIMARY}Factory"
                                  destination-name="${XMED.1.INITIATION}"/>

<jms:message-driven-channel-adapter id="101InstructionQueue2In" 
                                  channel="xmedInitiation2PrimaryChannel"                                    
                                  auto-startup="true"
                                  connection-factory="${XMED.2.PRIMARY}Factory"
                                  destination-name="${XMED.2.INITIATION}"/>


<jms:message-driven-channel-adapter id="201InstructionQueue1In" 
                                  channel="xmedInitiation1SecondaryChannel" 
                                  connection-factory="${XMED.1.SECONDARY}Factory"
                                  destination-name="${XMED.1.INITIATION}" 
                                  auto-startup="true"/>                                   

<jms:message-driven-channel-adapter id="201InstructionQueue2In" 
                                  channel="xmedInitiation2SecondaryChannel" 
                                  connection-factory="${XMED.2.SECONDARY}Factory"
                                  destination-name="${XMED.2.INITIATION}" 
                                  auto-startup="true"/>

... 기타 등등.

메시지가 수신되면 모두 동일한 채널로 라우팅합니다. 그러나 나는 메시지가 어디서 왔는지를 알아야 할 필요가 있습니다. 실제로 메시지를 전달하기 전에 메시지에 큐 이름을 추가하기 위해 헤더를 좀 더 풍부하게 사용하고 있습니다.

<channel id="xmedInitiation1PrimaryChannel"  />

<header-enricher input-channel="xmedInitiation1PrimaryChannel" output-channel="initiationPreprocessingChannel" >
    <header name="INITIATOR" value="PRIMARY" />
    <header name="INITIATOR_NAME" value="${XMED.1.INITIATION}" />
</header-enricher>

<channel id="xmedInitiation1SecondaryChannel"  />

<header-enricher input-channel="xmedInitiation1SecondaryChannel" output-channel="initiationPreprocessingChannel" >
    <header name="INITIATOR" value="SECONDARY" />
    <header name="INITIATOR_NAME" value="${XMED.1.INITIATION}" />
</header-enricher>

대기열 이름 목록을 반복하고 해당 어댑터를 즉시 만들 수있는 방법이 있습니까? 아마도 자바 구성을 사용하고 계십니까? 미리 감사드립니다.

해결법

    from https://stackoverflow.com/questions/33507361/how-to-hook-up-a-list-of-message-driven-adapters-without-actually-writing-each-o by cc-by-sa and MIT license