DisableConcurrentExecution
和Worker Count = 1
之间的区别是什么?
我在Worker Count = 1
中设置了BackgroundJobServerOptions
,但似乎两个作业都已执行(只有一个队列)。如果可以运行多个作业,那么设置此值的重点是什么?
答案 0 :(得分:1)
他们基本上做同样的事情如果你只使用一个backgroundjob服务器。
DisableConcurrentExecution
这是一个per job属性,可确保类/方法名称的两个实例不会同时运行。如果使用SQL Server后端,这是通过分布式SQL锁实现的。工作人员将选择该作业并尝试使用给定的超时获取作业/方法名称的锁定。请注意,工作进程将忙碌"它正在等待SQL锁打开,并且无法处理其他作业。
Worker Count = 1
这是每个hangfire backgroundjob服务器实例设置。如果您有一个hangfire backgroundjob处理服务器,将其设置为一个实质上会导致所有作业不同时运行(只有一个作业处理器)。如果有两个服务器都运行且WorkerCount都为1,那么您的作业将同时运行,因为您的总工作池数为2. DisableConcurrentExecution属性将确保作业不会同时运行,无论您激活的工作程序或服务器的数量是多少。