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 メッセージ エンベロープの再作成を試みて処理しているように見えますが、ヘッダーは削除されます。
興味深いのは、コードが負荷テストで常にまったく同じメッセージを送信していることです。メッセージが異なる方法で受信される理由はまだわかりません。