【发布时间】:2020-10-07 19:50:16
【问题描述】:
我正在尝试在我的 AspNet Zero 项目中使用 Hangfire Queues。
我将后端配置为仅处理特定队列,如下例所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddHangfireServer(options =>
{
options.Queues = new[] { "alpha", "beta", "default" };
});
}
但是,将QueueAttribute 应用于Execute() 方法似乎并未指定应在哪个队列上处理作业。 Hangfire 数据库中的条目始终为default。
public class TestJob : BackgroundJob<int>, ITransientDependency
{
[Queue("alpha")]
public override void Execute(int number)
{
// Do something
}
}
作业根据 ABP 文档排队:
public class MyService
{
private readonly IBackgroundJobManager _backgroundJobManager;
public MyService(IBackgroundJobManager backgroundJobManager)
{
_backgroundJobManager = backgroundJobManager;
}
public void Test()
{
_backgroundJobManager.Enqueue<TestJob, int>(42);
}
}
在排队时如何指定作业队列?
【问题讨论】:
-
尝试使用 hangfire 的 IBackgroundJobClient 来启动作业
-
你试过这样的**静态方法吗?
BackgroundJob.Enqueue<TestJob>(x => x.Execute(123)) -
@RajithaKithuldeniya:是的,这就是下面给出的答案。
标签: aspnetboilerplate hangfire