杭火在部署完prod后,自动启动所有的重复性工作。

问题描述 投票:-2回答:1

我在生产中的Hangfire遇到了一个严重的问题,虽然偶尔会发生,但很令人担忧。

我正在使用Hangfire与.Net Core 2.1。

在部署我的Hangfire作业后,我所有的循环作业都自动启动,这不是我所期望的。有谁注意到了这个问题?

我无法解决这个问题,请先帮帮我。

c# asp.net .net asp.net-core hangfire
1个回答
0
投票

根据我的经验,这通常是因为之前的作业失败了,所以当Hangfire有机会时,会自动重试。(您可以通过在您的数据库中寻找工作来检查是否是这种情况。Failed 状态)。)

如果需要,有一些方法可以修改这个行为。

如果你不想让一个作业被重试,可以放置一个显式属性,最大重试尝试值为0。

[AutomaticRetry(Attempts = 0)]
public void BackgroundMethod()
{
}

用同样的方法将尝试次数限制在不同的值上。如果你想改变默认的全局值,请添加一个新的全局过滤器。

GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 5 });

如果你使用的是ASP.NET Core,你可以使用IServiceCollection扩展方法AddHangfire。注意,AddHangfire使用GlobalJobFilter实例,因此依赖关系应该是Transient或Singleton。

services.AddHangfire((provider, configuration) =>
{
   configuration.UseFilter(provider.GetRequiredService<AutomaticRetryAttribute>());
}

参考。处理异常

© www.soinside.com 2019 - 2024. All rights reserved.