2011-09-05 56 views
1

我試圖找到一種方法來支持從相同的安裝目錄(但作爲單獨的進程運行)的nServiceBus的多個配置。現在人們怎麼做呢?nServiceBus的多個配置文件 - 相同的目錄

我知道:

  • 程序可以用
NServiceBus.Configure 
    .With() 
    ... 
    .MsmqTransport() 
    .Configurer.ConfigureComponent<MsmqTransport> 
    (NServiceBus.ObjectBuilder.ComponentCallModelEnum.None) 
     .ConfigureProperty(x => x.InputQueue, "DynamicInputQueue1") 
     .ConfigureProperty(x => x.ErrorQueue, "DynamicErrorQueue1"); 
  • 更改參數,您可以通過安裝多個服務的 「實例」:

NServiceBus.Host.exe /安裝/服務名:XYZ /例如:ABC

,但我想這兩個這樣的實例名稱的影響該配置路徑,我們需要結合起來。所以我想它歸結爲這 - 我如何獲取實例名稱?或者有沒有其他的路線我可以採取這一點,而不訴諸多個單獨的安裝目錄和每個實例的app.configs?

感謝

回答

1

我認爲從維護的角度來看,你可能需要不同的目錄,使之簡單爲您管理的鄉親,但如果你想有一個單獨的目錄,你也許可以使用下列方法之一。

您可能需要考慮實施自定義配置文件。配置文件名稱在命令行中提供,並允許您根據配置文件調整設置。 OOTB NSB有3個配置文件,Lite,Integration和Production,它們根據環境更改設置。您可以創建自己的並使用配置文件提供不同的設置。只需實現IProfile,然後在命令行上提供它。

另一種選擇可能是實現IConfigurationSource並從您決定的位置提取數據。這可能是多個文件,一個數據庫或其他東西。

最後,您可以將您的配置放入不同的程序集中,並利用NSB容器在上面的引導程序代碼中使用.With(您的程序集列表包含正確的配置程序集)加載適當的配置。這可能可以通過實施IWantToRunAtStartup來完成,但請檢查以確保在服務的生命週期中正確調整了配置。

+0

很好,謝謝亞當 - 我正在使用一些代碼,使我能夠獲取完整的服務名稱(因此實例名稱),但它看起來像配置文件可能是一個更好的選擇。 –

相關問題