如何在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
是什么:它在我的依赖项中不可用。所以,听起来更像是你自己的,因此,我们必须知道它的价值。
DefaultJmsHeaderMapper
(JmsSendingMessageHandler
默认使用)中的逻辑是这样的:
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 Boot 中设置 ActiveMQ 端口?
如何使用 spring 集成 dsl 从 JMS 队列中解组 XML