我正在尝试排队或安排工作(例如发送邮件)。以下是我在试用/错误过程中观察到的内容:
default
。因此,当其他开发人员调试代码时,它们将成为正在侦听默认队列的服务器。Enqueue<T>
和Schedule<T>
方法。)BackgroundJobClient
将新作业入队并使用EnqueuedState("test")
指定队列名称时,会立即执行。在所有这些之后,我没有得到作业(函数)和队列之间的关系。有人可以解释一下为什么我的作业在“默认”队列中执行时失败,以及为什么它们在不同的队列中执行时会成功?
另外,有人可以解释我为什么在尝试找工作时遇到“找不到方法”的问题吗?
我问这些问题,因为我想了解所有这些问题背后的真正原因,而不是做出推论。
答案 0 :(得分:0)
不确定这是否会回答,但我遇到了同样的问题,并发现了一些事情
使用Schedule
(或重复工作)时,只有当您直接Enqueue
它们时才支持队列名称(除非您自定义创建系统以支持它)。{{3} },它已经过时但应该仍然有效。
如果您有多个服务运行hangfire来管理不同类型的作业,请确保为每个服务提供一个不同的hangfire数据库来存储他们的数据。如果您将它们全部放在同一个数据库中,那么当一个工作需要时启动HF将搜索默认队列来运行它(除非你指定队列名称但是......见上文)。
但是每个服务都有一个带有默认队列的HF服务器,并且没有指示哪个是正确的...所以HF可能会试图在另一个服务的服务器上运行它,它没有任何服务关于作业调用的概念,因为它没有链接到正确的代码库See this。 另一方面,如果您指定队列的名称,并且该名称仅在服务器“链接”到正确的代码上,则HF将在该队列上运行作业(同样,只要您不安排它),找到它需要的东西,一切都会起作用
希望这有点帮助