C# 将.netframework NserviceBus端点服务迁移到.net core 3.0
我有.net framework 4.6.1 nServiceBus端点作为服务运行。我还使用顶部的架子作为windows服务托管控制台应用程序。我知道它是这样设置的:C# 将.netframework NserviceBus端点服务迁移到.net core 3.0,c#,asp.net-core,.net-core,nservicebus,topshelf,C#,Asp.net Core,.net Core,Nservicebus,Topshelf,我有.net framework 4.6.1 nServiceBus端点作为服务运行。我还使用顶部的架子作为windows服务托管控制台应用程序。我知道它是这样设置的: class Program { static void Main(string[] args) { ConfigureEndpoint.Configure(); } } internal static class ConfigureEndpoint { internal sta
class Program
{
static void Main(string[] args)
{
ConfigureEndpoint.Configure();
}
}
internal static class ConfigureEndpoint
{
internal static void Configure()
{
HostFactory.Run(configure =>
{
configure.Service<EndpointSetup>(service =>
{
service.ConstructUsing(s => new EndpointSetup());
service.WhenStarted(s => s.OnStart("connectionString"));
service.WhenStopped(s => s.OnStop());
service.WhenShutdown(s => s.OnStop());
});
//Setup Account that window service use to run.
configure.RunAsLocalSystem();
configure.EnableShutdown();
configure.SetServiceName("endpointName");
configure.SetDisplayName("endpointName");
configure.SetDescription("endpointName");
configure.EnableServiceRecovery(recoveryOption =>
{
recoveryOption.RestartService(5);
});
configure.OnException(e =>
{
var logger = LogConfiguration.GetLoggerConfiguration();
logger.Error(e, "Unhandled Exception Exiting");
Environment.Exit(1);
});
});
}
public class EndpointSetup
{
private static IEndpointInstance _endpointInstance;
public void OnStart(string connectionString)
{
AsyncOnStart(connectionString).GetAwaiter().GetResult();
}
private async Task AsyncOnStart(string connectionString)
{
var endPtConfig= new EndpointConfiguration("endpointname");
endPtConfig.EnableInstallers();
InitialSetup(endPtConfig, connectionString); //<- basic setups
CustomizeMessages(endPtConfig); //<- conventions and routings for nservice bus
CustomizeContainer(endPtConfig); //<-- register business related services
_endpointInstance = await Endpoint
.Start(endPtConfig)
.ConfigureAwait(false);
}
public void OnStop()
{
_endpointInstance?.Stop().GetAwaiter().GetResult();
_servicePublisher?.Stop().GetAwaiter().GetResult();
}
类程序
{
静态void Main(字符串[]参数)
{
ConfigureEndpoint.Configure();
}
}
内部静态类ConfigureEndpoint
{
内部静态void Configure()
{
HostFactory.Run(配置=>
{
configure.Service(Service=>
{
ConstructUsing(s=>newendpointsetup());
服务启动时(s=>s.OnStart(“连接字符串”);
停止时(s=>s.OnStop());
service.WhenShutdown(s=>s.OnStop());
});
//Windows服务用于运行的安装程序帐户。
configure.RunAsLocalSystem();
configure.EnableShutdown();
configure.SetServiceName(“endpointName”);
configure.SetDisplayName(“endpointName”);
configure.SetDescription(“endpointName”);
configure.EnableServiceRecovery(recoveryOption=>
{
recoveryOption.RestartService(5);
});
configure.OnException(e=>
{
var logger=LogConfiguration.GetLoggerConfiguration();
logger.Error(e,“未处理的异常退出”);
环境。出口(1);
});
});
}
公共类终结点设置
{
私有静态IEndpointInstance_endpointInstance;
public void OnStart(字符串连接字符串)
{
AsyncOnStart(connectionString.GetAwaiter().GetResult();
}
专用异步任务AsyncOnStart(字符串连接字符串)
{
var endPtConfig=newendpointconfiguration(“endpointname”);
endPtConfig.EnableInstallers();
InitialSetup(endPtConfig,connectionString);//在线查看时,我还发现自从引入“工作者服务”概念以来,.net core 3.0中可能不需要TopShelf。在本文中可以看到:仍然感到困惑……在线查看时,我还发现,.net core 3.0中可能不需要TopShelf,因为“工人服务”的概念被引入。从这篇文章中可以看出:仍然困惑。