2012-05-25 65 views
0

我試圖創建一個內部使用NServiceBus的PubSub的功能的發佈訂閱門面。我用NServiceBus做這件事的一個問題是很多配置都是通過接口完成的。例如,發佈者將實現IWantToRunAtStartup。該發佈者的端點將實現IConfigureThisEndpoint和AsA_Publisher。NServiceBus配置通過代碼

這是一個非常酷的功能,是「流暢」,使代碼易於閱讀和理解。

但它使得很難創建一個門面。例如,實現IWantToRunAtStartup的基類將要求所有超類引用NServiceBus.Host。

有一個要求引用NServiceBus,當然,完全打破了具有正面的想法。那個時候門面的重點是什麼?

確實NServiceBus具有配置類型爲端點,出版商,訂戶和消息不使用的接口技術的一種方式?如果是這樣,有人可以指向我的文檔(或更好的是樣本?)

回答

1

接口IConfigureThisEndpoint,AsA_Publisher和IWantToRunAtStartup不需要設置發佈/訂閱。

如果你沒有在NServiceBus.Host.exe中託管你的端點,你所需要做的就是告訴NServiceBus它應該如何存儲訂閱 - 在內存中,使用msmq,關係數據庫還是在RavenDB中。只需選擇合適的方法作爲你的Configure.With()...初始化代碼的一部分。

隨着3.0版本,NServiceBus支持不會對任何NServiceBus不依賴消息類型的定義 - 見http://docs.particular.net/nservicebus/messaging/unobtrusive-mode

在任何情況下,你的用戶將被處理事件的代碼被髮表會需要實現NServiceBus接口IHandleMessages。

一般來說,我會說,NServiceBus是哲學足夠不同於其他服務的公共汽車從一個移動到其他不會帶或不帶門面顯著容易。