Java 需要将头添加到将发送到IBM MQ websphere的消息中

Java 需要将头添加到将发送到IBM MQ websphere的消息中,java,jms,ibm-mq,Java,Jms,Ibm Mq,我不知道如何将消息头添加到发送到IBMMQWebSphereServer的消息中。以下是我尝试使用的代码,但我遇到异常: 创建与服务器的连接 qMgr = new MQQueueManager(queueMgr, props); int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE; queue = qMgr.

我不知道如何将消息头添加到发送到IBMMQWebSphereServer的消息中。以下是我尝试使用的代码,但我遇到异常:

创建与服务器的连接

        qMgr = new MQQueueManager(queueMgr, props);

        int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
                | MQC.MQOO_OUTPUT |  MQC.MQOO_INQUIRE;
        queue = qMgr.accessQueue(queueName, openOptions);
        message = new MQMessage();
发送信息

public String sendMessage(){

      MQPutMessageOptions pmo = new MQPutMessageOptions();


        message.format                  = MQC.MQFMT_STRING;
        message.feedback                = MQC.MQFB_NONE;
        message.messageType             = MQC.MQMT_DATAGRAM;

        message.messageId     = MQC.MQMI_NONE;
        message.correlationId = MQC.MQCI_NONE;

            message.writeString(sMsg);
            queue.put(message,pmo);
}
我尝试使用下面的代码添加标题

((TextMessage)message).setStringProperty(header_name,header_value);
但是我得到了异常
java.lang.ClassCastException:com.ibm.mq.MQMessage不能转换为javax.jms.TextMessage


我被困在这里。如果这个问题解决了,那么谜题就解决了。

为什么要将Java SE MQ API调用与JMS调用混合使用

从手册中,在WebSphere MQ Java类的“处理消息属性”部分:

处理消息句柄的函数调用在 WebSphere MQ Java类。设置、返回或删除消息的步骤 处理属性,使用MQMessage类的方法

因此,你为什么不干脆做:

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

message.format        = MQC.MQFMT_STRING;
message.feedback      = MQC.MQFB_NONE;
message.messageType   = MQC.MQMT_DATAGRAM;
message.messageId     = MQC.MQMI_NONE;
message.correlationId = MQC.MQCI_NONE;

message.setStringProperty(header_name,header_value)

message.writeString(sMsg);
queue.put(message,pmo);

最后一点,请不要回复说您不能这样做,因为您使用的是WMQV6。WMQ v6在大约2年前就不支持了,所以您必须升级到WMQ v7.*(最好是WMQ v7.5)。

为什么要将Java SE MQ API调用与JMS调用混合使用

从手册中,在WebSphere MQ Java类的“处理消息属性”部分:

处理消息句柄的函数调用在 WebSphere MQ Java类。设置、返回或删除消息的步骤 处理属性,使用MQMessage类的方法

因此,你为什么不干脆做:

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

message.format        = MQC.MQFMT_STRING;
message.feedback      = MQC.MQFB_NONE;
message.messageType   = MQC.MQMT_DATAGRAM;
message.messageId     = MQC.MQMI_NONE;
message.correlationId = MQC.MQCI_NONE;

message.setStringProperty(header_name,header_value)

message.writeString(sMsg);
queue.put(message,pmo);

最后一点,请不要回复说您不能这样做,因为您使用的是WMQV6。WMQ v6在大约2年前就不支持了,所以您必须升级到WMQ v7.*(最好是WMQ v7.5)。

为什么要将Java SE MQ API调用与JMS调用混合使用

从手册中,在WebSphere MQ Java类的“处理消息属性”部分:

处理消息句柄的函数调用在 WebSphere MQ Java类。设置、返回或删除消息的步骤 处理属性,使用MQMessage类的方法

因此,你为什么不干脆做:

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

message.format        = MQC.MQFMT_STRING;
message.feedback      = MQC.MQFB_NONE;
message.messageType   = MQC.MQMT_DATAGRAM;
message.messageId     = MQC.MQMI_NONE;
message.correlationId = MQC.MQCI_NONE;

message.setStringProperty(header_name,header_value)

message.writeString(sMsg);
queue.put(message,pmo);

最后一点,请不要回复说您不能这样做,因为您使用的是WMQV6。WMQ v6在大约2年前就不支持了,所以您必须升级到WMQ v7.*(最好是WMQ v7.5)。

为什么要将Java SE MQ API调用与JMS调用混合使用

从手册中,在WebSphere MQ Java类的“处理消息属性”部分:

处理消息句柄的函数调用在 WebSphere MQ Java类。设置、返回或删除消息的步骤 处理属性,使用MQMessage类的方法

因此,你为什么不干脆做:

MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

message.format        = MQC.MQFMT_STRING;
message.feedback      = MQC.MQFB_NONE;
message.messageType   = MQC.MQMT_DATAGRAM;
message.messageId     = MQC.MQMI_NONE;
message.correlationId = MQC.MQCI_NONE;

message.setStringProperty(header_name,header_value)

message.writeString(sMsg);
queue.put(message,pmo);
最后一点,请不要回复说您不能这样做,因为您使用的是WMQV6。WMQ v6在大约2年前就不支持了,所以您必须升级到WMQ v7.*(最好是WMQ v7.5)