既然已經看到了發佈/訂閱的行動,讓咱們來看看在窗簾後面,看看發生了什麼。node
若是你尚未見過的發佈/訂閱樣本然而花一分鐘穿過或開始使用NServiceBus建立一個新項目.數據庫
最主要的理解是這樣的:用戶讓出版商知道他們感興趣,和出版商商店的地址,這樣就知道發送的消息。很簡單,一旦你知道了它是如何運做的。編程
對發佈/訂閱消息傳遞的一個常見的假設是,它涉及到物理一對多溝通。惟一的問題是,在物理層面pub / sub並不有趣。在發佈時它變成有價值的邏輯事件從一個邏輯區域責任其餘邏輯感興趣。app
NServiceBus的基礎設施部分處理物流和一對多消息調度pub / sub許多尋找,但這些是至關透明的編程模型。讓咱們看看邏輯pub / sub和物理分佈的疊加,一步一個腳印。負載均衡
上面的圖向咱們展現了一個邏輯出版商P1,和兩個邏輯訂閱者SA和某人有不少物理節點(顏色的藍色)和一些NServiceBus基礎設施(橘色)。如今,咱們將假設SA和某人已經訂閱,每一個指定經銷商的離港公共端點。線程
當一個節點在邏輯出版商P1去發佈一個消息,發生了什麼:隊列
當請求應用邏輯來發布消息,訂閱數據庫配置的NServiceBus基礎設施聯繫,找到全部訂閱者端點註冊爲給定的消息類型,和每個分派一個物理信息。進程
單向消息用於調度物理消息以來,即便訂閱者端點之一是離線或不可用,這並不使出版線程塊。發送機器即將離任的消息存儲在隊列(可配置的時間),而消息傳遞基礎結構的嘗試將消息傳遞到目的地。事件
全部的經銷商在這一點上是該消息轉發它接收到另外一個節點。get
你能夠把經銷商的像一個負載均衡器它分發消息來許多其餘機器。這種物理一對多通訊須要擴展運行的機器數量對於一個給定的用戶,但實際上並不須要任何pub / sub。每一個用戶都有本身的獨立分銷商和他們中的每個決定,機它傳遞消息。
看到關於經銷商的更多信息.
無論哪一個節點在出版商出版消息,會發生一樣的過程。
這意味着你能夠向外擴展發佈節點的數量,經過使用數據庫來存儲訂閱,而無需一個分銷商。當使用通用NServiceBus主機進程你獲得這個默認的生產情況。