2017-04-21 77 views
0

一點點背景:我需要提高我們批處理框架的性能。在那裏,批量輸入被髮送到JMS隊列。此外,在隊列端點,我們有一個消耗消息的MDB。現在,我懷疑在這裏如果有大量的消息,沒有MDB實例可用於消費這些消息,因爲它們都處於前面的消息中。爲了改善這一點,我正在考慮在MDB業務邏輯中實現一個線程池,以便一旦MDB收到消息並將其傳遞給線程,它就可以免費使用另一條消息。監控WAS中的JMS隊列

現在在實現這個之前,我想監視我的JMS隊列以檢查消息是否真的在隊列中等待。所以我需要知道這個監控是否可以通過一些WAS管理控制檯或一些JMX應用程序來完成。我的主要目的是檢查隊列中每個jms消息的等待時間。

+0

在開始實施一些複雜邏輯之前,您必須知道消息順序對您是否至關重要,可以使用持久性/非持久性消息。檢查「每個端點最大併發MDB調用」的當前設置,通過PMI檢查運行的併發MDB數量以及onMessage平均響應時間。您也可以使用「最大批量大小」設置來檢查它是否會產生任何影響。 – Gas

+0

@Gas對不起,我的縮寫不好。這是什麼PMI?是的,訂單並不重要,因爲隊列中存在的消息是由線程池中的平面文件放置的,線程池可以是任意順序。 –

+0

PMI是性能監控基礎架構,內建WAS功能,可讓您監控各種事物。在WebSphere Knowledge Center中查找更多詳細信息。 – Gas

回答

0

首先,您可以設置將並行使用Q的進程數(MDB實例)。默認值是10(羣集的每個成員..)。
與控制檯:Resources -> JMS -> activation specifications,設置"Maximum concurrent MDB invocations per endpoint"被定義爲'。「消息所併發傳送的終點的最大數量」``

至於監測Q和產生一些負荷,你可以去看看在JMSToolBox on sourceforge

在JMSToolBox「目標信息」對話框中,你也可以看到併發用戶的數量上Q

此外,如果你想測量在Q通過信息的時間花費,只需計算當前時間與JMS站點之間的差異即可ndard屬性來自MDB在onMessage()方法中處理的消息