我正在尋找替代設計或解決此問題的方法,我遇到過MSMQ消息。現在我正在使用NServiceBus(而不是問題)爲我的服務體系結構。它工作得很好,我非常喜歡它。但是,在處理正常工作負載消息之前,我想在啓動時初始化服務時遇到一些問題。讓我解釋我的情況。NServiceBus設計幫助(使用消息初始化服務實例)
比方說,我有2個服務,數據訪問(DA)和處理引擎(PE)。
的PE執行兩個任務:
- 負載從DA一些配置信息。
- 處理傳入的客戶端請求。
問題是由於配置。服務啓動後,我無法保證收到的第一條消息是配置消息。我知道你可以在啓動時清除隊列中的所有消息,但我不想這樣做,因爲我需要處理所有消息。其次,即使我清除隊列中的所有消息,仍然不能保證配置將首先加載,事實上,由於該服務正在處理的消息量很大,所以不太可能成爲第一個收到的消息。
我給你們的問題是你過去爲了解決這些類型的問題而採用基於消息的體系結構。我在這裏創造了重大罪惡,並且認爲這些信息將以某種順序到達,這不可能離真相更遠。
是的,我研究了優先事項,事實上,這正是我需要的,但NServiceBus要求所有隊列是交易性的,但交易隊列不能優先......幸運的是我的權利? 我認爲最好的解決方案是像你說的那樣使用兩個隊列。一個用於初始化,另一個用於處理。我試着先實施這個解決方案,然後停下來,因爲我發現了優先事項。 – Brian 2010-11-24 15:30:09
要回答第二個問題,當PE服務啓動時,它會向DA發送一條消息,請求配置文件。 – Brian 2010-11-24 15:31:23
謝謝Igal,我用2個隊列結束了。我使用一個進行初始化,然後在初始化完成後切換到主要的一個。似乎正在工作就像我需要它。 – Brian 2010-11-24 22:14:45