Есть ли способ настроить прослушивание очереди для зависания в методе «ConfigureServices» в консольном приложении Asp.NetCore? - PullRequest
0 голосов
/ 13 мая 2019

Используя хост-компоновщик Asp.NetCore, я пытаюсь изменить прослушиваемую очередь Hangfire, используя метод, который я мог бы использовать в методе «ConfigureServices».

Мне было интересно, смогу ли я это сделать или я был обязан использовать:

using (new BackgroundJobServer(options)) { /* ... */ } от Документация или если был другой способ.

Вот мой основной метод

static void Main(string[] args)
{
    HostBuilder hostBuilder = new HostBuilder();
    hostBuilder.ConfigureServices(ConfigureServices);
    hostBuilder.Build().Run();
}

и вот как выглядит мой метод ConfigureServices:

public static void ConfigureServices(IServiceCollection services)
{
    services.AddHangfire(config =>
    {
        config.UsePostgreSqlStorage();
    });

    services.AddHangfireServer();
}

Я ожидал, что у AddHangfireServer будет перегрузка, принимающая BackgroundJobServerOptions, но я не нашел ее.

Есть ли способ, которым я пропустил перегрузку, или вы полностью изменили прослушиваемую очередь?

1 Ответ

0 голосов
/ 13 мая 2019

Редактировать : services.AddHangfireServer(); будет иметь перегрузку, принимающую BackgroundJobServerOptions с Hangfire 1.7.5 ( Как видно здесь )

Ответ длялюди с более низкой версией Hangfire, чем 1.7.5:

Я изучил код метода AddHangfireServer, и они делают:

var options = provider.GetService<BackgroundJobServerOptions>() ?? new BackgroundJobServerOptions();

Таким образом, способ передачи BackgroundJobServerOptions состоит в том, чтобы зарегистрировать его в контейнере IoC перед вызовом метода AddHangfireServer.

Вот мой последний ConfigureServices метод:

public static void ConfigureServices(IServiceCollection services)
{

    //this was added
    services.AddSingleton(new BackgroundJobServerOptions()
    {
        //you can change your options here
        Queues = new[] { "etl" }
    });

    services.AddHangfire(config =>
    {
        config.UsePostgreSqlStorage();
    });

    services.AddHangfireServer();
}
...