我試圖使用EDA和NServiceBus分離兩個應用程序。目前,我有銷售MT和庫存MT。無論何時通過銷售MT請求銷售,在批准之前,銷售MT將調用庫存MT以確保存在可用庫存。我想改變它的工作方式,這樣Sales MT會自動批准它,併發布異常「SaleCreated」事件,Inventory MT和Billing MT將訂閱此事件。如果有缺貨項目,庫存MT可以在脫機過程中標記銷售。使用NServiceBus擴展訂戶的擴展出版物
我的問題是我有10個銷售MT實例,5個我的庫存MT實例和3個我的Billing MT實例。所有3個應用程序都在位於10/5/3服務器前的LoadBalancer上擁有自己的虛擬IP。所以基本上我有1個虛擬出版物(SaleCreated events)和2個虛擬訂閱(Inventory and Billing訂閱者)。理想情況下,由Sales MT處理的銷售應該創建一個SaleCreated事件消息,發送給1,並且僅發送1個庫存MT,以及1個並且僅發送一個Billing MT。我真的很困惑這將如何工作,因爲我沒有在NServiceBus網站上看到這種情況的例子。另外,我不希望每個訂閱都將所有消息發送給單個分發服務器,因爲這會導致一臺計算機成爲瓶頸。
有沒有辦法做到這一點?
謝謝,Udi。這有幫助。我有一些後續步驟: 1.您在「製作配置文件」中找到的意思是什麼 2.如何在訂閱數據庫中獲得發佈實例的新訂閱者通知,似乎每次檢查都會很糟糕。 3.好像還有更好的分發訂閱方式。有了這個,您可以通過發佈者生成的每條消息都通過一個盒子發送(即使您有100個發佈框)。 – skb 2010-07-13 02:15:25
要詳細瞭解配置文件(特別是生產配置文件),請訪問http://www.nservicebus.com/Profiles.aspx 使用數據庫時,發佈者實例無需瞭解新訂戶 - 他們在每次發佈時訪問數據庫。 如果你不想讓所有的分銷商在同一個盒子上,那就把它們放在不同的盒子上。您通常基於消息類型進行分區,因此您可以輕鬆地爲每個消息類型分配一個分發路由。 – 2010-07-14 15:32:50
因此,每一次發佈都需要往返訂閱數據庫? – skb 2010-07-14 22:38:54