【问题标题】:How to set JMS Header in spring integration message如何在spring集成消息中设置JMS Header
【发布时间】:2022-01-15 09:44:55
【问题描述】:

我正在尝试通过在推送到 IBM MQ 之前在其标头中设置来在 Spring 集成消息中设置 jms 相关 ID,但在从队列中读取消息后该值不可用。

使用下面的代码设置标题

MessageBuilder.withPayload("Hi")
.setHeader(JmsConstans.JMS_CORRELATIONID,"ID12334556889").build();

【问题讨论】:

    标签: java java-8 jms spring-integration spring-integration-dsl


    【解决方案1】:

    我们不知道JmsConstans.JMS_CORRELATIONID 是什么:它在我的依赖项中不可用。所以,听起来更像是你自己的,因此,我们必须知道它的价值。

    DefaultJmsHeaderMapperJmsSendingMessageHandler默认使用)中的逻辑是这样的:

    private void populateCorrelationIdPropertyFromHeaders(MessageHeaders headers, javax.jms.Message jmsMessage) {
        Object jmsCorrelationId = headers.get(JmsHeaders.CORRELATION_ID);
        if (jmsCorrelationId instanceof Number) {
            jmsCorrelationId = jmsCorrelationId.toString();
        }
        if (jmsCorrelationId instanceof String) {
            try {
                jmsMessage.setJMSCorrelationID((String) jmsCorrelationId);
            }
            catch (Exception ex) {
                LOGGER.info("Failed to set JMSCorrelationID, skipping", ex);
            }
        }
    }
    

    JmsHeaders.CORRELATION_ID 的值在哪里:jms_correlationId

    然而,所有这些只是猜测,因为我们不知道您如何将该消息推送到 IBM MQ...

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 2016-06-14
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2016-01-17
      • 1970-01-01
      相关资源
      最近更新 更多