2012-11-05 2 views
0

요청/응답 방식으로 호출되도록 지정된 JMS (activemq) 큐에서 소모하는 낙타 경로가 있습니다. 이 경로에서 메시지를 분리하고 또 다른 activemq 대기열을 호출합니다 (요청/응답 방식으로도).Apache Camel 라우트에서 들어오는 JMSCorrelationId 처리

는 Heres는 상황

<route> 
    <from uri="activemq:A" /> 
    <split> 
     <xpath>/root/subpart</xpath> 
     <inOut uri="activemq:B" /> 
    </split> 
</route> 

문제를 보여주는 최소한의 경로는 (이미 수신 메시지에서 하나 있기 때문에) 낙타는 새로운 JMSCorrelationID로 설정하지 않습니다. 아무 것도하지 않으면 알 수없는 correlationId로 응답을 얻고 교환은 끝나지 않습니다.

세부 사항에 대해서는 언급하지 않았지만 동일한 추측 값은 구멍 분리기에 사용되지만 논리적으로는 각 메시지마다 다른 상관 관계 ID가 필요합니다. 모두 동일을 사용하여, 그것은 첫 번째를 수신하고 다른 사람들과 무엇을 해야할지 모릅니다.

상황을 처리하는 가장 좋은 해결책은 무엇입니까?

내가 발견 한 작업은 다른 헤더에 들어오는 JMSCorrelationId (확실한 것은 아닌지)를 저장하고 제거하는 것입니다. 이것은 내가 원하는 것처럼 깨끗한 것은 아니지만 다른 것을 생각할 수는 없습니다. 어떤 아이디어?

답변

1

본질적으로 귀하의 사례는이 Jira issue에 설명되어 있습니다. 2.11에 새로운 corr-id를 생성하도록 Camel에 요청할 수있는 추가 기능이있는 것으로 보입니다.

그래서, "activemq : B"로 보내기 전에 JMSCorrelationId 헤더 <removeHeader headerName="JMSCorrelationId" />을 제거하기 위해 계속 노력하고 계시지 않으시겠습니까? 나는 그것이 지금 가장 좋은 해결책이라고 생각합니다.

물론 "useMessageIDAsCorrelationID"옵션을 사용하여 두 번째 끝점에서 재생할 수도 있습니다.