我有一个起火队列,忘了工作,我的队列配置为每10分钟执行一次,如下所示:

var options = new SqlServerStorageOptions
{
    QueuePollInterval = TimeSpan.FromMinutes(10)
};


尽管工作是“生与死”,但我不想等待10分钟,但我现在想处理队列。这该怎么做?

最佳答案

我假设您的意思是您想保持代码原样(使用10分钟的PollingInterval),但是需要一种机制来强制作业在需要时立即运行-在这种情况下,我认为您应该能够使用Hangfire仪表板UI ,您可以在其中看到所有作业的详细分类,以及现在重试/触发等。

要安装它,只需添加Nuget软件包:Hangfire.Dashboard.Authorization

然后通过以下链接添加适合您的应用类型的配置-通常可以正常使用。
http://docs.hangfire.io/en/latest/configuration/using-dashboard.html

更新-WinForms

对于WinForms项目,我认为最好的选择仍然是Dashboard(可以从应用程序中将其托管在本地主机上托管的OWIN服务器中-比您想象的要容易)

以下是一些参考资料:


https://www.codeproject.com/tips/854141/how-to-self-host-web-api-in-asp-net-web-forms-appl
http://www.c-sharpcorner.com/UploadFile/4b0136/working-with-owin-hosting-and-self-hosting-in-Asp-Net/(请参阅最后一节)

关于c# - 如何强制Hangfire立即处理队列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45177382/

10-13 03:18