Настройка Rebus в. net основной рабочей службе (или консольном приложении) - PullRequest
1 голос
/ 11 марта 2020

Я видел, что Добавление rebus в ASP. NET Конвейер выполнения ядра очень аккуратен при использовании Startup.cs. Интересно, есть ли такой же удобный способ сделать то же самое для службы Worker или вообще для консольного приложения.

Большинство. net основных консольных приложений, которые я видел, являются очень простыми демонстрационными приложениями. Пожалуйста, если есть какой-то конкретный пример конфигурации с использованием. net основного консольного приложения. С уважением Амур Рашид

1 Ответ

0 голосов
/ 11 марта 2020

Один из способов - добавить пакет Microsoft.Extensions.Hosting от Microsoft и создать свою фоновую службу в виде BackgroundService:

public class MyBackgroundService : BackgroundService
{
    readonly IServiceCollection _services = new ServiceCollection();

    public BackgroundService()
    {
        // configure the bus

        services.AddResbus(
            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((hostContext, services) =>
        {
            services.AddHostedService<MyBackgroundService>();
        });

в вашем стартапе.

...