2017-11-06 10 views
-2

는 내가 메시지를 생성하는 내 서비스 중 하나에이 빈을 주입하고 Camel ProducerTemplate은 모든 메시지에 동일한 JMSCorrelationID를 사용하고 생성 된 각 메시지에 대해 고유 ID를 얻는 방법은 무엇입니까?

<camel:template id="msgProducerTemplate" />

낙타

를 사용하여 생산자 템플릿을 정의했다. 이것은 CorrelationID를 생성 생산하고 모든 메시지에 대한

msgProducerTemplate.sendBodyAndHeaders(endpointUri, message, headerMap);

내가이 실제 메시지가 동일한 경우에도 각 메시지에 대한 새로운 ID를 생성 할 수있는 방법, 동일합니다. 주제 :

내 endpointUri는 inboundTopic입니다

<bean id="inboundTopic" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="connectionFactory" ref="jmsTopicConnectionFactory" /> 
    <property name="destinationResolver" ref="topicDestinationResolver" /> 
    <property name="transacted" value="true" /> 
    <property name="transactionManager" ref="topicTxManager" /> 
    <property name="cacheLevelName" value="CACHE_CONSUMER" /> 
</bean> 

<bean id="topicConnectionFactory" class="com.ibm.mq.jms.MQTopicConnectionFactory"> 
    <property name="hostName" value="${queuehost}" /> 
    <property name="port" value="${queueport}" /> 
    <property name="queueManager" value="${queuemanager}" /> 
    <property name="channel" value="${channel}" /> 
    <property name="transportType" value="${transportType}" /> 
</bean> 

<bean id="jmsTopicConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> 
    <property name="targetConnectionFactory" ref="topicConnectionFactory" /> 
    <property name="username"> 
     <value>${userid}</value> 
    </property> 
</bean> 

<bean id="topicDestinationResolver" class="com.abc.jms.JMSTopicDestinationResolver" /> 
+0

그것은 당신이 JMS 구성 요소와 당신은 더 자세한 정보를 제공 할 필요가 등으로 보내는 JMS 엔드 포인트를 구성 방법에 따라 달라집니다, 또한 JMS 구성 요소 및 방법 요청/작품 회신에 대한 자세한 내용을 읽어 보시기 바랍니다. –

+0

@ClausIbsen이 질문을 업데이트했습니다. – Sri

+0

그리고 생성자 템플릿에 전달하는 헤더에 기존 JMSCorrelationID를 제공하지 않았습니까? 예를 들어 DEBUG/TRACE 로깅을 디버그 및/또는 활성화하고 진행 상황을 볼 수 있습니다. –

답변

0

그냥 JMSCorrelationID 헤더를 추가

내 jmscomponent는 다음과 같이 정의된다 $ {topic.name} ....

예 :

headerMap.put("JMSCorrelationID", UUID.randomUUID().toString()); 
+0

문제를 해결할 수 있지만 그 이유는 무엇인지 알고 있습니다. – Sri

+1

사용중인 구성 요소를 언급하지 않았습니다. ExchangePattern과 다른 끝점 옵션도 관련이 있으므로이 순간에 제공 할 수있는 유일한 대답입니다. 대답을 얻으려면 전체 endpointUri, headerMap의 내용을 제공하고 낙타 버전을 사용하십시오. – Bedla