• NServiceBus主机


    为了避免重写代码相同的配置,或举办你的端点在Windows服务中,使用 NServiceBus.Host.exe,这也可以作为一个控制台运行。

    NServiceBus主机简化服务的开发和部署,没有代码,允许你改变技术和administrator-friendly当设置权限和账户。

    使用主机就创建一个新的c#类库和引用NServiceBus。主机NuGet包

    install-package NServiceBus.Host
    

    就这样,计划将创建一个示例NServiceBus.Host端点配置和设置。exe运行您的端点。

    配置您的端点

    NServiceBus.Host.exe扫描运行时目录组件包含一个实现类 IConfigureThisEndpoint接口。这个类将包含此端点配置。你可以阅读更多关于NServiceBus如何组装扫描在这里

    如果你想避免扫描过程您可以显式配置端点配置的类型通过添加以下的 NServiceBus.Host.exe.config文件。下面的示例显示准确的语法:

    • v5

      编辑

      <configuration>
        <appSettings>
          <add key="EndpointConfigurationType" 
               value="YourNamespace.YourTypeName, YourAssembly"/>
        </appSettings>
      </configuration>
      

      自定义初始化和创业

      NServiceBus v5你自定义端点使用行为 IConfigureThisEndpoint.Customize方法在您的端点配置类。就调用适当的方法 BusConfiguration参数传递给方法。

      • v5

        编辑

        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");
            }
        }
        
        NServiceBus v4和v3

        改变组装等核心设置扫描、容器和序列化格式,实现 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方法。

        NServiceBus v4和v3

        更改主机的日志记录基础设施,实现 IWantCustomLogging接口。在 Init方法,配置您的自定义设置。NServiceBus利用你的日志,使用 NServiceBus.SetLoggingLibrary.Log4Net()API,所描述的日志文档,如下所示:

        • V4

          编辑

          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请添加以下您的配置行为。

          • v5

            编辑

            var config = new BusConfiguration();
            
            config.PurgeOnStartup(true);
            config.Transactions().Disable();
            config.DisableFeature<SecondLevelRetries>();
            config.DisableFeature<StorageDrivenPublishing>();
            config.DisableFeature<TimeoutManager>();
            
            NServiceBus v4和v3

            剩下的代码指定运输、订阅存储,和其他技术并不在这里,因为 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:"corpserviceuser"
            /password:"p@ssw0rd!" NServiceBus.Production
            

            卸载,叫

            NServiceBus.Host.exe /uninstall
            

            如果你指定一个服务名称或实例名称安装您的服务时,您需要将它们传递到卸载命令:

            NServiceBus.Host.exe [/uninstall  [/serviceName] [/instance]]
            

            例如:

            NServiceBus.Host.exe /uninstall /serviceName:YourServiceName /instance:YourInstanceName
            

            调用基础设施安装、运行的主机 /installInfrastructure开关。了解安装程序。

        • 相关阅读:
          Intersection Observer 观察元素何时进入或退出浏览器的视口
          JS防抖函数、节流函数工具类封装
          页面刷新时,如何保持原有vuex中的state信息
          vue具名插槽、作用域插槽的新写法
          vue-cli3+工具中,配置路径别名(vue.config.js)
          基于Vue-SSR优化方案归纳总结
          React组件设计:重新认识受控与非受控组件
          如何用 JavaScript 实现一个数组惰性求值库
          原生 js 中应该禁止出现的写法,以提高代码效率和安全性
          Javascript 实践中的命令模式
        • 原文地址:https://www.cnblogs.com/powerxu/p/4294333.html
        • Copyright © 2020-2023  润新知