我遇到的问题是,使用相同的参数将一些执行hangfire的作业排入一个以上的队列,而几乎同时将这些作业排入队列。
我试图将工人人数限制为一个,然后用DisableConcurrentExecution
装饰我的方法。
我正在使用sqlserver作为存储。任何人都遇到过这个问题,有一些避免的技巧?
PS:我使用了DisableConcurrentExecution
,因为在hangfire文档中,互斥量和信号量不能保证仅一次调用该作业。
[PS2:检查我的hangfire服务器,我注意到我有两个实例,每个实例只有1个工作程序,所以我认为这是一个并行性问题,而不是并发的。
根据Hangfire documentation,当重复的作业/任务没有标识符时,就会出现重复的作业问题: RecurringJob.AddOrUpdate("some-id", () => Console.WriteLine(), Cron.Hourly);
来源:
MaximumConcurrentExecutions(1)
装饰了hangfire运行的接口方法。