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