1

onMessage イベントでは、メッセージが Spring Integration メッセージとして変換されない場合、MessageBuilder を使用して再構築しようとします。ただし、ヘッダーは含まれません。これは正しくないようです。Apache Artemis 1.2 と Spring 4.2.5 を使用しています。

問題のコードは次のSubscribableJmsChannelとおりです。

public void onMessage(javax.jms.Message message) {
    Message<?> messageToSend = null;
    try {
        Object converted = this.jmsTemplate.getMessageConverter().fromMessage(message);
        if (converted != null) {
            messageToSend = (converted instanceof Message<?>) ? (Message<?>) converted
                    : this.messageBuilderFactory.withPayload(converted).build();
            this.dispatcher.dispatch(messageToSend);
        }
        else if (this.logger.isWarnEnabled()) {
            logger.warn("MessageConverter returned null, no Message to dispatch");
        }
    }

メッセージが Spring メッセージとして変換されることもあれば、Spring メッセージ ペイロードから変換が試みられることもあります (20 回に 1 回程度)。その場合、以下のコードは、Spring メッセージ エンベロープの再作成を試みて処理しているように見えますが、ヘッダーは削除されます。

興味深いのは、コードが負荷テストで常にまったく同じメッセージを送信していることです。メッセージが異なる方法で受信される理由はまだわかりません。

4

0 に答える 0