Java 使用指定编码向WMB发送JMS消息

Java 使用指定编码向WMB发送JMS消息,java,jms,ibm-mq,Java,Jms,Ibm Mq,我正在尝试向WMB发送指定encoding=273的消息,但它只更改属性和MQRFH2中的编码,而不更改MQMD中的编码(这里是546)。我做错了什么? MQMD给出的CCSID可以被RFH2中的CCSID覆盖,WMB流应该知道这一点,因此它将使用RFH2中的CCSID解析数据。因此,我不明白为什么需要在MQMD中设置CCSID。我需要在MQMDцMQRFH2中使用相同的编码,因为这种差异会影响WMB中分段消息的创建。我当前的解决方案是通过message.setIntProperty(WMQC

我正在尝试向WMB发送指定encoding=273的消息,但它只更改属性和MQRFH2中的编码,而不更改MQMD中的编码(这里是546)。我做错了什么?


MQMD给出的CCSID可以被RFH2中的CCSID覆盖,WMB流应该知道这一点,因此它将使用RFH2中的CCSID解析数据。因此,我不明白为什么需要在MQMD中设置CCSID。我需要在MQMDцMQRFH2中使用相同的编码,因为这种差异会影响WMB中分段消息的创建。我当前的解决方案是通过message.setIntProperty(WMQConstants.JMS_IBM_encoding,CMQC.MQENC_REVERSED)设置与MQMD in属性和MQRFH2头-546中相同的编码;
@Autowired
private JmsTemplate jmsTemplate;

private static final String SETTINGS_QUEUE = "REQUESTS/INTERNAL/GETSETTINGS";

public void sendSettingsMessage(String componentName, String componentVersion) {
    try {
        MQTopic topic = new MQTopic(SETTINGS_QUEUE);
        topic.setMQMDWriteEnabled(true);
        topic.setEncoding(WMQConstants.WMQ_ENCODING_NATIVE);
        jmsTemplate.send(topic, session -> {
            Message message = session.createMessage();
            message.setStringProperty("resource", "/settings/" + componentName + "." + componentVersion);
            message.setStringProperty("method", "GET");
            message.setStringProperty("source", "UI");
            message.setIntProperty(WMQConstants.JMS_IBM_ENCODING, WMQConstants.WMQ_ENCODING_NATIVE);
            message.setIntProperty(WMQConstants.JMS_IBM_MQMD_ENCODING, WMQConstants.WMQ_ENCODING_NATIVE);
            return message;
        });
    } catch (JMSException e) {
        throw new RuntimeException(e);
    }
}