Jac*_*ack 1 c# batch-processing hangfire
DisableConcurrentExecution
和 和有Worker Count = 1
什么区别?
我设置Worker Count = 1
了我的BackgroundJobServerOptions
但似乎两个作业都执行了(只有一个队列)。如果可以运行多个作业,设置此值有什么意义?
如果您只使用单个后台作业服务器,它们基本上会做同样的事情。
DisableConcurrentExecution
Run Code Online (Sandbox Code Playgroud)
这是每个作业的属性,可确保类/方法名称的两个实例不会同时运行。如果使用 SQL 服务器后端,这是通过分布式 sql 锁完成的。工作人员将拿起作业并尝试在给定的超时时间内获取作业/方法名称的锁。请注意,工作进程在等待 SQL 锁打开时将处于“忙碌”状态,并且无法处理其他作业。
Worker Count = 1
Run Code Online (Sandbox Code Playgroud)
这是每个 hangfire backgroundjob 服务器实例设置。如果您有一个 hangfire 后台作业处理服务器,将其设置为一个基本上会导致您的所有作业无法同时运行(只有一个作业处理器)。如果您有两台服务器运行,且 WorkerCount 均为 1,则您的作业将并发运行,因为您的总工作池为 2。 DisableConcurrentExecution 属性将确保无论您激活的工作程序或服务器的数量如何,作业都不会同时运行。
归档时间: |
|
查看次数: |
5504 次 |
最近记录: |