簡體   English   中英

需要將標題添加到將發送到IBM MQ Websphere的消息中

[英]need to add header to message which will be sent to 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);
}

我嘗試使用下面的代碼添加標題

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

但是我遇到異常java.lang.ClassCastException: com.ibm.mq.MQMessage cannot be cast to javax.jms.TextMessage

我被困在這里。 如果解決了這個問題,那么謎語就完成了。

為什么將Java SE MQ API調用與JMS調用混合使用?

在手冊中,針對Java的WebSphere MQ類的“處理消息屬性”部分:

用於處理消息句柄的函數調用在Java的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。 WMQ v6大約2年前就不再支持,因此您必須升級到WMQ v7。*(最好是WMQ v7.5)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM