2017-11-06 10 views
-2

私は、メッセージを生成するために、私のサービスの一つにこのBeanを注入していラクダCamel ProducerTemplateは、すべてのメッセージに対して同じJMSCorrelationIDを使用していますが、生成される各メッセージに対して一意のIDを取得する方法はありますか?

<camel:template id="msgProducerTemplate" />

を使用して制作テンプレートを定義しました。すべてのメッセージの

msgProducerTemplate.sendBodyAndHeaders(endpointUri, message, headerMap);

これはCorrelationIDが生成された生成実際のメッセージが同一の場合でも、私はそれがメッセージごとに新しいIDを作成することができますどのように、同じです。

私endpointUriはinboundTopicです:トピック:$ {} topic.nameマイjmscomponentは以下のように定義されて

...

<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ヘッダを追加します。

例:

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

問題を解決することは知っていますが、どうすればいいですか? – Sri

+1

あなたは使用しているコンポーネントについて言及していません。 ExchangePatternと他のエンドポイントオプションも関連しているので、これは私が現時点で提供できる唯一の答えです。答えるには、完全なendpointUri、headerMapの内容を提供し、ラクダのバージョンを使用してください。 – Bedla

関連する問題