2011-03-01 79 views
1

剛開始學習NServiceBus並試圖理解這個概念。 當談到隊列時,我們是在談論發佈商和訂閱者的MSMQ? 因此,如果我有一個應用程序生成一些東西(比如動物名稱)列表,那麼它會將列表轉儲到發佈者的隊列中。發佈者每分鐘輪詢一次隊列,並且如果隊列中有某物,它將發佈到用戶的隊列以供進一步處理。這有意義嗎?NServiceBus隊列概念

謝謝。

回答

5

事件的序列,用於發佈如下:

  • 出版商將啓動(Windows服務)
  • 訂閱者將啓動,並把消息進入發佈者的輸入隊列(MSMQ)
  • 發佈者將採取該消息,讀取訂閱者的地址並將其放入存儲(訂閱存儲:內存,MSMQ或RDBMS)
  • 何時該發佈和事件,t他Publisher將檢查消息的類型,然後閱讀訂閱存儲找到感興趣的是消息訂閱
  • 出版商然後將消息發送到每個訂閱存儲中認購的
  • 認購人在其輸入端接收郵件隊列(MSMQ)並處理它

您可以利用其他消息傳遞平臺而不是MSMQ,但MSMQ是默認值。實際上沒有輪詢完成,當消息到達隊列時,所有端點都會發出信號。

+0

@ Adam- So,訂戶將擁有自己的輸入隊列?或者,代理商是否會從發佈者的隊列中獲取消息? – Tony 2011-03-02 15:57:04

+1

用戶將擁有自己的輸入隊列,以便他們可以處理郵件而不會阻止其他人,這將是獨立的 – 2011-03-02 16:50:09

+0

好的,謝謝大家,謝謝大家。 – Tony 2011-03-02 18:13:39

0

MSMQ是一個傳輸層。它傳遞消息。

應用程序將發佈東西使用NServiceBus隊列。如果您將其配置爲使用MSMQ,那麼它將用於其傳輸層,這就是用戶將要查看的內容。

0

NServiceBus遵循發佈商/訂戶模型,因爲您已正確聲明。然而,你的困惑是基於使用兩個隊列。這是不正確的。服務器(發佈者)將維護通過MSMQ協議接口的隊列,因此您的應用程序可以直接與其進行遠程或本地通信。

您通常會使用WCF服務,這會在將新消息壓入隊列時引發事件。然後您的應用程序可以根據需要使用這條新消息。見NServiceBus文檔的例子:http://www.nservicebus.com/ArchitecturalPrinciples.aspx