我正在寫一個正在監聽來自隊列(Oracle AQ)的消息並將它們發送到另一個隊列(Tibco EMS)的Java批處理,它們由Tibco進程(BW)處理。刪除JMS消息屬性
問題是,Oracle AQ驅動程序會自動向消息(JMSXGroupID,JMSXGroupSeq)添加一些屬性,這些屬性由Tibco進程處理,因爲它們具有錯誤值:JMSXGroupSeq應該是int,但設置爲null。嘗試解析消息屬性時,Tibco會陷入錯誤...
因此,我想從所有消息中僅刪除這2個屬性,但似乎jms api只提供clearProperties()方法,但沒有單個屬性remove方法(我正在使用javax.jms.Message接口)。
現在,我可以看到兩個解決方案:
設置正確的值到這2個屬性,我假設他們將 不會被進一步的Tibco
使用讀取所有屬性並重構消息而不引起問題。但這種做法是非常難看的...
有沒有人有任何其他解決方案?
感謝您的回覆。我試過這個解決方案,但得到了一個javax.jms.MessageNotWriteableException。我發現消息頭屬性受到保護,您需要調用clearProperties()來獲得寫入權限。以下是一些解釋:[鏈接](http://my.safaribooksonline.com/book/programming/java/0596000685/message-properties/appc-4-fm2xml)。所以我現在不得不採取第二種解決方案,但我們正在等待甲骨文的解答,以解決不正確標題值的主要問題。 – slavogiez