2010-10-25 35 views
1

在我的項目中,我有兩個JMS隊列一個數據隊列和一個業務隊列。多個線程從這兩個隊列讀取數據並將其提交給多個引擎的網格。 網格有多個引擎可以並行執行任務並行同步和異步方式。調度問題

問題陳述:來自業務隊列的事件應優先於網格上的數據隊列。

這個問題可以通過很多方式解決,但資源利用率是最優的,如果可能的話,數據隊列中事件的匱乏不會發生。

一個簡單的解決方案是:維護一個計數器,如果業務事件發生時遞增,如果業務事件在網格上處理則遞減。如果數據事件需要等到計數器達到零(或網格上的最大引擎數量)。 Sthng可以做到阻止飢餓。

任何更好地利用網格引擎優化的soln也java線程利用率最優?

回答

0

你有沒有在讀線程嘗試這樣做:

 

while(reading from any queue) 
{ 
    while (there are messages in business queue) 
    { 
     process a business queue message. 
    } 

    process one data queue message. 
} 

 
+0

這是不是直線前進。在這裏,我有多個線程可以將同步和異步作業提交給網格。 – Ashish 2010-10-26 00:13:25

+0

如果每個讀者都像我上面展示的那樣,那麼業務隊列將具有優先權。也許你需要更詳細地解釋情況。業務隊列項目是否同步以及數據項目是否同步? – DwB 2010-10-26 11:57:09