Hangfire 限制作业数取决于服务器 cpu / 内存状态

Hangfire limitting jobs count depending on server cpu / memory status

我可以使用队列名称在服务器之间分配作业。另外,我可以设置 workerCount。但是,我需要根据服务器 cpu / 内存状态动态决定执行作业。此外,我需要再次根据 cpu / 内存指标在运行时选择最佳服务器。 我可以创建这样的业务逻辑吗?

有多种方法可以做到这一点,但不确定您为什么要这样做。 Number of workers 通常基于您拥有的 CPU 数量,这样您就不会得到没有足够资源的工作人员。

如果您确实想使用 cpu/memory 指标并在对任何作业进行排队之前检查系统状态,请注意您每次都会增加额外的开销,只是为了在排队之前检查“所有”服务器指标下一份工作。

一种方法是根据池中的每个服务器创建一个队列名称。然后,将 [UseQueueFromParameterAttribute] 属性用于 运行 您的逻辑,并根据您从每个服务器的指标中找到的内容 select 队列。

Discussion and example on how to use UseQueueFromParameterAttribute