我正在開發一個支持從各種硬件類型接收狀態信息的系統。每個硬件都報告相同的狀態信息(經度,緯度),但每種硬件類型都使用唯一的協議報告此信息。出於這個原因,我有多種服務,每種設備類型一個,監聽和解析該設備的協議。我想對於每個服務使用一個共同的信息發佈狀態信息:NServiceBus終端可以訂閱同一消息的多個發佈者嗎?
public interface IPositionMessage : IMessage
{
string UnitName { get; set; }
double Latitude { get; set; }
double Longitude { get; set; }
}
我毫不費力就建立我的第一個服務,但是現在,我建立我發現,我的第二個服務我的訂閱者無法訂閱來自多個發佈者的相同消息。
以類似question on the NServiceBus yahoo group,推薦的解決方案是將公共消息轉換成命令,並使用Bus.Send而非Bus.Publish。在這種情況下,我不覺得這是有道理的,因爲真正發生的事情是一個事件(該單位已經到達一個位置並正在報告新的位置)。如果我要把它轉換成一個命令,我需要事先知道這個事件的所有潛在用戶,但我不知道。另一種可能的解決方案是創建一個聚合/重新發布者,每個服務將總線發送到,然後該消息將從單個發佈者重新發布。這似乎是不必要的瓶頸。
有沒有什麼方法來允許用戶訂閱來自多個發佈同樣的信息?
AFAIK,這是不好的做法,從多個邏輯出版社出版。 –
在我看來,每個服務都是作爲一個邏輯發佈者的一部分參與的物理節點。如果我有一個服務實現,並且我需要擴展到在第二臺計算機上安裝它,我的情況將不會有所不同。 – JadeMason