在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次左右)。在这种情况下,下面的代码似乎尝试处理重新创建Spring消息信封 - 但它将删除标题。
有趣的是,我们的代码总是在负载测试中发送完全相同的消息。我还没弄清楚为什么收到的信息会有所不同。