爲了不重寫代碼相同的配置,或舉辦你的端點在Windows服務中,使用 NServiceBus.Host.exe
,這也能夠做爲一個控制檯運行。web
NServiceBus主機簡化服務的開發和部署,沒有代碼,容許你改變技術和administrator-friendly當設置權限和帳戶。c#
使用主機就建立一個新的c#類庫和引用NServiceBus。主機NuGet包後端
install-package NServiceBus.Host
就這樣,計劃將建立一個示例NServiceBus.Host端點配置和設置。exe運行您的端點。安全
的 NServiceBus.Host.exe
掃描運行時目錄組件包含一個實現類 IConfigureThisEndpoint
接口。這個類將包含此端點配置。你能夠閱讀更多關於NServiceBus如何組裝掃描在這裏服務器
若是你想避免掃描過程您能夠顯式配置端點配置的類型經過添加如下的 NServiceBus.Host.exe.config
文件。下面的示例顯示準確的語法:app
編輯ide
<configuration> <appSettings> <add key="EndpointConfigurationType" value="YourNamespace.YourTypeName, YourAssembly"/> </appSettings> </configuration>
NServiceBus v5你自定義端點使用行爲 IConfigureThisEndpoint.Customize
方法在您的端點配置類。就調用適當的方法 BusConfiguration
參數傳遞給方法。ui
編輯spa
using NServiceBus; class CustomizingHost : IConfigureThisEndpoint { public void Customize(BusConfiguration configuration) { // To customize, use the configuration parameter. // For example, to customize the endpoint name: configuration.EndpointName("NewEndpointName"); } }
改變組裝等核心設置掃描、容器和序列化格式,實現 IWantCustomInitialization
在端點配置類(同一個類實現IConfigureThisEndpoint
)。你���須開始配置表達式 With
操作系統
Configure.With()
不執行任何啓動的行爲 Init
方法。
自定義initalization後作了常規的核心 INeedInitalization
實現發現將以一樣的方式,當你自我託管。
推遲全部的創業行爲,直到全部初始化已經完成。在這一點上,NServiceBus調用的類實現IWantToRunWhenBusStartsAndStops
(IWantToRunWhenTheBusStarts
在v3 . x)接口。行爲適用於實現的一個例子IWantToRunWhenBusStartsAndStops
(IWantToRunWhenTheBusStarts
在v3 . x)的主要形式在一個Windows窗體應用程序。在Windows服務,後端實現類 IWantToRunWhenBusStartsAndStops
(IWantToRunWhenTheBusStarts
在v3 . x)應��啓動諸如web爬行,數據挖掘和批處理過程。
NServiceBus v5日誌的主機使用相同的API爲核心的控制。這是記錄在這裏.
您能夠添加日誌API調用上述所直接在您的實現 IConfigureThisEndoint.Customize
方法。
更改主機的日誌記錄基礎設施,實現 IWantCustomLogging
接口。在 Init
方法,配置您的自定義設置。NServiceBus利用你的日誌,使用 NServiceBus.SetLoggingLibrary.Log4Net()
API,所描述的日誌文檔,以下所示:
class MyEndpointConfig : IConfigureThisEndpoint, IWantCustomLogging { public void Init() { // setup your logging infrastructure then call SetLoggingLibrary.Log4Net(null, new MyLogger()); } }
你可能想要指定不一樣的日誌級別(DEBUG
, WARN
等)和不一樣的目標 (CONSOLE
, FILE
等)。主機提供一個機制來改變這些排列沒有代碼或配置更改,經過配置文件 .
版本5的角色被棄用,不該該被使用。大部分的功能 AsA_Server
, AsA_Publisher
核心已經違約,能夠安全地刪除。若是你還須要 AsA_Client
請添加如下您的配置行爲。
var config = new BusConfiguration(); config.PurgeOnStartup(true); config.Transactions().Disable(); config.DisableFeature<SecondLevelRetries>(); config.DisableFeature<StorageDrivenPublishing>(); config.DisableFeature<TimeoutManager>();
剩下的代碼指定運輸、訂閱存儲,和其餘技術並不在這裏,由於 AsA_Server
內置的配置描述。
雖然NServiceBus容許您選擇使用哪個技術和如何配置它們,這些選擇主機包分紅三個內置選項: AsA_Client
,AsA_Server
, AsA_Publisher
。利用全部這些選項 XmlSerializer
, MsmqTransport
, UnicastBus
。不一樣的是在配置:
AsA_Client
集 MsmqTransport
非事務性和清洗的隊列上的消息啓動。這意味着它每次都從新開始,不記得任何事情以前崩潰。同時,它處理消息使用本身的權限,而不是消息的發送者。AsA_Server
集 MsmqTransport
事務和在啓動時不清除隊列的消息。這使得它容錯。AsA_Publisher
擴展 AsA_Server
和指示設施設置存儲訂閱請求,描述的簡介頁面.當端點的上下文中運行Visual Studio調試器中,端點開始時,須要在啓動時建立隊列來促進發展。然而,當這個端點部署到服務器,開始從命令提示符端點不會創造所需的隊列,若是隊列不存在。建立隊列是一次性的成本只會發生在安裝期間。
安裝過程做爲一個Windows服務,您須要經過 /install
在命令行上的主機。默認狀況下,服務的名稱是您的端點和端點的名稱叫端點配置類的命名空間。要啓用並行操做,使用 /sideBySide
切換到SemVer版本添加到服務名稱。經過/安裝也會形成主機調用安裝程序 .
爲安裝覆蓋這個和指定附加的細節:
NServiceBus.Host.exe [/install [/serviceName] [/displayName] [/description] [/endpointConfigurationType] [/endpointName] [/installInfrastructure] [/scannedAssemblies] [/dependsOn] [/sideBySide] [/startManually] [/username] [/password]] [/uninstall [/serviceName] [/sidebyside] [/instance:Instance Name ]
你能夠經過運行下面這個列表在命令行:
NServiceBus.Host.exe /?
設置Windows服務註冊中心的實際名稱,指定 /serviceName:YourServiceName
。這是不一樣於你所看到的在Windows服務經理。
設置Windows服務的名稱做爲你看到它在Windows服務經理,指定 /displayName:YourService
.
若是你不指定 /displayName
,但指定 /serviceName
,顯示名稱不成爲中傳遞 /serviceName
,而是上述違約。
設置描述Windows服務經理所示,指定 /description:DescriptionOfYourService
.
安裝相同服務的多個實例,提供每個不一樣的實例名,使用「實例」的旗幟。例如: /instance:Instance5
.
默認狀況下,窗口服務操做系統啓動時自動啓動。改變,添加 /startManually
到 /install
命令。
指定的賬戶你想要你的服務,經過該賬戶的用戶名和密碼。
下面的一個例子 /install
命令行:
NServiceBus.Host.exe /install /serviceName:"MyPublisher" /displayName:"My Publisher Service" /description:"Service for publishing event messages" /endpointConfigurationType:"YourNameSpace.YourEndpointConfigType, YourAssembly" /username:"corp\serviceuser" /password:"p@ssw0rd!" NServiceBus.Production
卸載,叫
NServiceBus.Host.exe /uninstall
若是你指定一個服務名稱或實例名稱安裝您的服務時,您須要將它們傳遞到卸載命令:
NServiceBus.Host.exe [/uninstall [/serviceName] [/instance]]
例如:
NServiceBus.Host.exe /uninstall /serviceName:YourServiceName /instance:YourInstanceName
調用基礎設施安裝、運行的主機 /installInfrastructure
開關。瞭解安裝程序。