我有一個要求建立一個NSB用戶,它將訂閱正在發佈的消息,這些消息是已經存在的服務。這個服務是用包含我想要訂閱的NSB IMessage實現的消息程序集構建的。所以要建立我的訂戶,我需要對這個程序集的依賴。NServiceBus PubSub - 如何打破pub'r和sub'r之間的二進制依賴關係?
當我的用戶啓動時,它發送一些消息,從而導致發行記錄我的訂閱數據庫出版商輸入隊列。我的一個訂閱看起來是這樣的:
MyNamespace.MyMessageType, MyNamespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=MyPublicKeyToken
不幸的是,發佈者發佈消息從不強命名的程序集。因此,發佈時,訂閱評估過程無法成功評估我的訂閱,因爲發佈的消息的公鑰標記(value = null)與我的訂閱不匹配。
我的問題是:我能不能按類型和唯一版本訂閱消息?更好 - 我不能訂閱基於某種外部契約(如XSD)的消息並完全打破這種依賴關係嗎?
許多在此先感謝。
進展:NSB文檔的東西暗示這樣的位置:
http://www.nservicebus.com/MessagesAsInterfaces.aspx
是否有一個強有力的商業案例,爲什麼消息集必須強名稱? – 2011-05-25 15:28:57
嗯,不是商業案例,但通常情況下,使用強命名代碼進入生產環境會更安全。如果這種依賴是第三方(不是),那麼我會遇到一個真正的問題,因爲我不知道程序集是否來自可信來源。我知道你在說什麼。事實上,我並未被阻止,因爲我已經要求團隊開發消息來簡單地簽署消息程序集。但我的帖子仍然有效。當使用NSB pubsub時,如果你只是使用Bus.Send(),你總是會對發佈者產生嚴重的依賴。 – 2011-05-26 10:35:17