使用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
的重载,但是我没有找到。
是否有一种我错过过载的方法,或者您是否完全以另一种方式设置了侦听队列?
答案 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();
}