【问题标题】: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 是什么:它在我的依赖项中不可用。所以,听起来更像是你自己的,因此,我们必须知道它的价值。
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...