0

私のユースケース(キャメル):

  • 着信メッセージにcorrelationId(clientCorrIdなど)がある場合=>そのままにしておきます。 clientCorrIdはクライアントが応答をマップするために使用されるため、何もしません。

  • 着信メッセージに correlationId がない場合 => messageId を取得し、correlationId に入れます (「jms」コンポーネントを使用するすべてのルートではなく、ルート レベルで)

correlationId のコピーは、ルート レベルでのみ行う必要があります

ルート レベルで corrleationId のコピーを行う方法は? (以下のように useMessageIDAsCorrelationID のようにグローバルではありません)

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    <!--property name="useMessageIDAsCorrelationID" value="true" / WARNING! Do not use this as we need to copy only in the beginning not everywhere -->
    <property name="transactionManager" ref="jpaTransactionManager" />
    <property name="transacted" value="true" />
</bean>

このような別の Bean コードを使用して、空の場合にのみcorrelationId をコピーすることは避けたいです。

    if (EMPTY_MSG_ID.equals(currentCorrId)) {
        log.info("No corrId set, setting msgId to corrid :" + msgId);
        outHeader.put(correlationIdKey, msgId);
    } else {
        outHeader.put(correlationIdKey, currentCorrId);
        log.info("CorrId already set: " + currentCorrId);
    }
4

1 に答える 1