如何在spring集成消息中设置JMS Header

Posted

技术标签:

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

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

使用下面的代码设置标题

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

【问题讨论】:

【参考方案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...

【讨论】:

以上是关于如何在spring集成消息中设置JMS Header的主要内容,如果未能解决你的问题,请参考以下文章

使用Spring集成组件关联2个JMS队列之间的消息

如何在 Spring Boot 中设置 ActiveMQ 端口?

如何在春季集成中为每个出站 jms 消息设置优先级?

如何使用 spring 集成 dsl 从 JMS 队列中解组 XML

通过 Spring 集成入站适配器接收 JMS 消息随机失败

向 prometheus 公开 spring 集成 amqp/jms 通道消息指标