在.net核心Worker服务(或控制台应用程序)中配置Rebus



我已经看到,使用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。

相关内容

  • 没有找到相关文章

最新更新