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

时间:2014-05-09 06:17:51

标签: java jms ibm-mq

我不确定如何将消息头添加到我们发送给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);
}

我尝试使用以下代码添加标题

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

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

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

1 个答案:

答案 0 :(得分:3)

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

在手册的“处理邮件属性”部分中, for WebSphere MQ classes for Java:

  

处理消息句柄的函数调用没有等效的   WebSphere MQ classes for 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);

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