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

我不确定如何将消息头添加到我们发送给IBM MQ websphere服务器的消息中。 下面是我尝试使用的代码,但我得到例外:

创建与服务器的连接

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); } 

我尝试使用以下代码添加Header

 ((TextMessage)message).setStringProperty(header_name,header_value); 

但我得到exceptionjava.lang.ClassCastException: com.ibm.mq.MQMessage cannot be cast to javax.jms.TextMessage

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

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

从手册中,在WebSphere MQ classes for Java的“处理消息属性”一节中:

对WebSphere的WebSphere MQ类中的进程消息句柄的函数调用没有等效。 要设置,返回或删除消息句柄属性,请使用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); 

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