为了不重写代码相同的配置,或举办你的端点在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
开关。了解安装程序。