2010-08-25 63 views
1

我現在正在執行一些時間約束的項目。安裝程序是:Web服務接受(小)xml文件,我必須快速處理這些文件。具有動態優先級的MSMQ

首先也是最天真的想法是在請求調度程序本身處理這個處理,但是這並沒有擴展,並且從一開始就註定要失敗。

所以現在我正在尋找不同的負載傳入請求,每個負載在我身邊產生大約50個工作。由於客戶的規定,可用的技術有限。如果它不是Sql Server或MS MQ,它可能不會飛行。

我想過要走下MS MQ路線(Web服務只是提交消息,稍後再提供多個消費者流程),而小型概念模型證明像魅力一樣起作用。

雖然存在一個問題:這些工作的優先級可能會在隊列中發生很大變化。這個系統對時間要求很高,所以如果我們 - 無論出於何種原因 - 無法及時處理傳入的工作,我們需要選擇最新的工作。

基本上,用戶從可靠的消息傳遞到一般的LIFO,在太重的負載下都會發生變化。舊的條目仍然需要處理,但是失去了所有的優先權。

在MS MQ中是否有任何可管理的方式來構建這樣的東西?


拓展業務方面,如要求:

傳入作業的處理,勢必有些軌道,其中物理貨物搬來搬去。如果我不能及時處理這些消息,事情就會「消失」。

我仍然希望將結果用於統計目的,但現在確實需要關注較新的消息。

想到我能夠影響機械的東西和事物重新路由移動軌道上的 - 如果他們不搬過去點X還..

回答

1

所以,如果我理解這一點,你要能夠根據具體情況按照優先順序或到達時間對隊列進行排序。 MSMQ只能按優先級和到達時間對隊列進行排序。

儘管我明白你在做什麼,但我並不完全明白它的商業理由。你可以擴展這個嗎?

我會建議使用服務將消息從傳入隊列移動到多個工作隊列進行處理。在正常的負載下,會有幾個隊列,每個隊列都有一個監控線程。 在重負載下,新的流量將全部進入負載下降的一個「恐慌」隊列。必要時可以暫停其他工作隊列上的線程。

乾杯
約翰Breakwell

+0

更新的問題來解釋事物的業務方面。 關於你的建議:你建議一個「路由」服務,或多或少地使用循環法將消息傳遞給其他隊列? 我還沒搞懂它 - 爲什麼會有多個隊列(那麼爲什麼你不建議一個「恐慌」隊列和一個「正常」隊列)?儘管這可能是可能的,但我很難想出如何處理這個問題。對於企業來說,基本上每條消息都處於最高優先級,並隨時間推移失去優先級。 – 2010-08-26 09:40:01