簡體   English   中英

Java消息選擇器,用於從Websphere MQ獲取組消息

[英]Java Message selector for getting group Message from websphere mq

我正在嘗試從Java mdb中的websphere mq 8隊列管理器接收組消息。 當獲取LastMessageInGroup我從消息中收到一個jmsxgroupid例如'ID:45fdea5589'getStringProperty )。 當我試圖讓這個小組的其他消息,我使用messageconsumermessageselector在那里我添加的究竟jmsxgroupid一個額外jmsxsequence從上面,但是當調用方法receiveNoWaitmessageConsumer我收到一個Null BytesMessage

有趣的是,當groupid是類似於“ 20151019 ”的人類可讀字符串時,它起作用

因此,這是《守則》的一部分。
我們在MDB的onMessage方法中收到lastMessage。
我們使用方法讀取此lastMessage的JMSXGroupID
字符串gid = lastMessage.getStringProperty(“ JMSXGroupID”)。 然后,我們構建一個選擇器以獲取該組中的其他消息,如下所示:
字符串strSelector =“ JMSXGroupID ='” + gid +“'AND JMSXGroupSeq = 1”;
消費者= session.createConsumer(destIncoming,strSelector);
bmCurrentMessage =(BytesMessage)Consumer.receiveNoWait();
當gid類似於'ID:8d74b544d5862f32156cbfe845077c02d18ba33ac51c06aa'時,我們會收到一個空的BytesMessage! mq的行為就像隊列是空的。
當gid類似於“ 20151015081515”時,我們會收到組消息中的其他消息!

任何提示我應該做些什么?

到目前為止,感謝您閱讀托馬斯

在與IBM的MQ專家一起進行了長時間的分析之后,我們不得不安裝IBM提供的修訂包來解決此問題。 因此,我們的代碼顯然沒有問題,但是我們正在使用的MQ Server 8的IBM代碼內部存在一些問題。

現在,通過安裝IBM的最新修補程序解決了問題。

感謝所有閱讀和思考我的問題!

請記住,GroupID就像MessageID和CorrelationID一樣,不是字符串字段。 您說它在人類可讀的字符串時有效,這意味着當GroupID不可讀時,它對您來說失敗的時間就很大。 這表明由於對字符串進行了字符串處理,因此您沒有為該組中的后續消息請求正確的GroupID。 將其視為字節字符串而不是字符串。

暫無
暫無

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

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