【发布时间】:2021-05-26 06:50:07
【问题描述】:
我可以使用队列名称在服务器之间分配我的作业。另外,我可以设置workerCount。但是,我需要根据服务器 cpu / 内存状态动态决定执行作业。此外,我需要再次根据 cpu / 内存指标在运行时选择最佳服务器。 我可以创建这样的业务逻辑吗?
【问题讨论】:
标签: hangfire
我可以使用队列名称在服务器之间分配我的作业。另外,我可以设置workerCount。但是,我需要根据服务器 cpu / 内存状态动态决定执行作业。此外,我需要再次根据 cpu / 内存指标在运行时选择最佳服务器。 我可以创建这样的业务逻辑吗?
【问题讨论】:
标签: hangfire
有不同的方法可以做到这一点,但不确定你为什么要这样做。 Number of workers 通常基于您拥有的 CPU 数量,这样您就不会得到没有足够资源使用的工人。
如果您确实想在对任何作业进行排队之前使用 cpu/内存指标并检查系统状态,请注意,您每次都将增加额外的开销,以便在您排队下一个作业之前检查“所有”服务器指标。
一种方法是根据池中的每个服务器创建一个队列名称。然后,使用 [UseQueueFromParameterAttribute] 属性运行您的逻辑并根据您从每个服务器的指标中找到的内容选择队列。
Discussion and example on how to use UseQueueFromParameterAttribute
【讨论】: