使用 Hangfire,如何配置 Web 应用程序以在不启动进程内服务器的情况下使用 BackgroundJobClient.Create 排队?

Using Hangfire, how can I configure a web app to enqueue with BackgroundJobClient.Create without starting an in process server?

我们的网络应用程序使用 BackgroundJobClient.Create 对作业进行排队,但我们希望在单独的 Windows 服务中处理所有作业,而不是在我们的网络应用程序中。如果我们的网络应用程序在没有调用 builder.UseHangfireServer 的情况下启动,创建新作业会引发以下错误:

System.InvalidOperationException: 
JobStorage.Current property value has not been initialized. 
You must set it before using Hangfire Client or Server API.

AddHangfire(options => ...UseSqlServerStorage(...) lambda 似乎 运行 直到 UseHangfireServer 被调用。作为解决方法,我们可以配置我们的 Web 应用程序以侦听以某些 GUID 命名的队列,但这似乎是对 Web 应用程序的资源浪费,它可能 运行 网络场中的多个实例。

有什么方法可以在不在同一进程中启动 Hangfire 服务器的情况下配置 Hangfire 客户端?

Is there any way to configure a Hangfire client without starting a Hangfire server in the same process ?

是的,据我所知,对于客户端模块,您只需要像这样创建您的 BackgroundJobClient :

IBackgroundJobClient client = new BackgroundJobClient(new SqlServerStorage(yourConnectionString)) ;
// or any overload of the SqlServerStorage constructor.