有没有一种方法可以在Asp.NetCore控制台应用程序的“ ConfigureServices”方法中设置侦听hangfire的队列?

时间:2019-05-13 12:52:35

标签: c# asp.net-core hangfire

使用Asp.NetCore的主机生成器,我试图使用一种可以在“ ConfigureServices”方法中使用的方法来更改Hangfire的侦听队列。

我想知道我是否可以这样做,或者我是否有义务使用:

using (new BackgroundJobServer(options)) { /* ... */ }来自The documentation,或者还有其他方法。

这是我的主要方法

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 :(得分:0)

我研究了AddHangfireServer方法的code,他们正在做:

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

因此,传递BackgroundJobServerOptions的一种方法是在调用AddHangfireServer方法之前将其注册到IoC容器。

这是我最后的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();
}