我已经看到,使用Startup.cs在ASP.NET Core执行管道中添加rebus非常简单。我想知道是否有同样巧妙的方法可以为Worker服务或控制台应用程序做同样的事情。
我见过的大多数.net核心控制台应用程序都是非常简单的演示应用程序。如果有任何使用.net核心控制台应用程序的具体示例配置,请查收。当做阿莫尔·拉希德
一种方法是添加Microsoft的Microsoft.Extensions.Hosting包,并将后台服务构建为BackgroundService
:
public class MyBackgroundService : BackgroundService
{
readonly IServiceCollection _services = new ServiceCollection();
public MyBackgroundService()
{
// configure the bus
services.AddRebus(
configure => configure
.Transport(t => t.Use(...))
);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var provider = _services.BuildServiceProvider();
// start the bus
provider.UseRebus();
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
}
}
}
然后通过添加
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
{
services.AddHostedService<MyBackgroundService>();
});
在你的创业过程中。
感谢Mogens,另一种方法是
var host=CreateHostBuilder(args(.Build((;
host.UseRebus((;主办Run((;
或在ConfigureServices方法中。。。。var provider=services.CreateServiceProvider((;提供商。UseRebus((;
它帮助我可以使用rebs创建Worker Services。