![](/img/trans.png)
[英]need to add header to message which will be sent to IBM MQ websphere
[英]IBM Mq Message Header
我正在向遠程隊列發送消息,我無法控制。
我發送一個xml文件作為消息,但當應用程序讀取消息時,它會獲得一個消息標題
<mcd><Msd>jms_text</Msd></mcd> \0\0\0l<jms><Dst>queue:///TEST</Dst><Tms>1281475843707</Tms><Cid></Cid><Dlv>1</Dlv></jms>
我不希望這個消息頭存在,我發送此消息的代碼如下:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",this.initialFactory);
props.setProperty("java.naming.provider.url", url);
Context context = new InitialContext(props);
QueueConnectionFactory qcf = (QueueConnectionFactory) context.lookup(this.context);
qConn = qcf.createQueueConnection();
queue = (Queue)context.lookup(name);
qSession = qConn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
qConn.start();
QueueSender send = qSession.createSender(queue);
String text = "My xml file";
TextMessage tm = qSession.createTextMessage(text);
send.send(tm);
send.close();
我該如何避免這種情況?
您似乎正在向非jms目的地發送jms消息。 消息如何在目的地上消耗? 是否期望本機MQ消息? 接收方不了解存儲JMS頭屬性的MQRFH2頭。
您應該配置目標以了解jms,或者您可以執行以下操作來告訴mq jms您的接收器是非jms客戶端。
((com.ibm.mq.jms.MQQueue) queue).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);
查看文檔中列出的 JMS對象的屬性。 在被管理對象上有一個名為TARGCLIENT的屬性,應該設置為'MQ'。 盡管您可能無法控制受管理對象,但管理受管對象的人員有責任正確設置此屬性。 如果目標不理解RFH2標頭(WMQ v6用於保存JMS屬性),那么向該目標發送消息的任何WMQ JMS應用程序都必須設置該屬性。
順便提一下,您遇到此問題的事實往往表明應用程序使用消息仍處於v6。 請注意,WMQ的v6.0截至2011年9月已停止使用。如果您現在在QMgr和客戶端都切換到v7,則可以通過隊列本身的簡單設置進行管理。 遺留應用程序將理解消息,無論它們是否附加了RFH2,並且客戶端應用程序將響應視為JMS消息,無論舊應用程序是否添加RFH2標頭。 現在轉到v7,保存自己在開發這個應用程序時遇到很多麻煩,同時避免明年遷移到v7。
WMQ v7客戶端下載可在此處獲得
更新 :WMQ V6的壽命終止已推遲至2012年9月。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.