有没有办法使用 JmsSendingMessageHandler 发送 MQSTR 格式的消息

Is there a way to send message with MQSTR format using JmsSendingMessageHandler

我正在使用 JmsSendingMessageHandler 发送 JMS 消息

@Bean
@ServiceActivator(inputChannel = "queueChannel" )
public MessageHandler sendMessageOnTopic() {

    JmsSendingMessageHandler messageHandler = new JmsSendingMessageHandler(jmsTemplate);
    messageHandler.setDestinationExpression(new FunctionExpression<Message<?>>(message -> message.getHeaders().get("destination")));
    return messageHandler;

}

默认情况下,消息以格式 MQHRF2 进入 MQ。问题是大型机只理解 MQSTR 格式,

有什么方法可以通过某些配置或添加任何 header 来实现(我尝试将 JMS_IBM_Format 添加到 MQSTR 作为消息 header 但没有工作)?

如果我像下面这样直接使用jmsTemplate,我也能达到同样的效果

jmsTemplate.convertAndSend("queue:///" + message.getHeaders().get("destination") + "?targetClient=1", message.getPayload());

我想知道我是否可以使用 JmsSendingMessageHandler 获得相同的结果?

正如评论中提到的@Artem,这可以做到

@Bean
@ServiceActivator(inputChannel = "queueChannel" )
public MessageHandler sendMessageOnTopic() {

    JmsSendingMessageHandler messageHandler = new JmsSendingMessageHandler(jmsTemplate);
    messageHandler.setDestinationExpression(new FunctionExpression<Message<?>>(message -> "queue:///" + message.getHeaders().get("destination") + "?targetClient=1"));
    return messageHandler;

}

或者即使我们直接从 yml 将目的地作为 queue:///QUEUE_NAME?targetClient=1 传递。