2012-05-29 32 views
3

我有一個進程使用JMSTemplate來根據JMS頭值選擇性地從MQ隊列中出隊。MQ選擇性出隊速度有時可悲

當出列查詢匹配隊列前端的消息時,出列率大約爲60-70 msg /秒。但是,當查詢匹配僅50,100或200條消息的消息時,出列率下降到1 msg/3-4秒。

快速出隊查詢是ThreadId='24' or ThreadId='PRIMARY'。慢出隊查詢是ThreadId='24'

處理時間緩慢的真正原因可能是其他原因,但我觀察到處理時間的變化,只不過是取消選擇查詢中的更改。

我懷疑這種處理速度不正常。什麼可能會出錯?

+1

您使用的是什麼版本的MQ? 6.x的? v7.x有很多性能改進。您也可以查看www-304.ibm.com/support/docview.wss?uid=swg27007197上建議的WMQ性能報告和調優。性能報告以SupportPacs形式發佈,名稱前綴爲 – Shashi

回答

3

由於標題未被編入索引,因此不推薦按標頭查詢深隊列。這可能是問題。 CorrelationId和MessageId上的查詢(如果它們的格式爲「ID:48-十六進制數字」)將被編入索引,並且非常快(根據設置,非常深的隊列上的查詢速度爲〜1ms /查詢)。

我們也遇到了這個問題,並選擇在關聯id頭中而不是在JMS字符串屬性(MQRFH2/usr)頭中編碼關聯標識符。

這是MQ 7.0

+0

需要進行一些重構,但我現在使用的是相關ID,速度非常快。謝謝一堆。 – Synesso

+1

好,你終於有了表現。如果所有頭文件都有索引或者可以配置,WMQ會非常棒。謝謝現在有一些解決方法 –