[英]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.