Hangfire-30分钟后重复执行长期作业

时间:2019-11-07 15:41:50

标签: c# hangfire

我有处理一些繁重数据的工作,它将运行一个多小时。

问题是,工作30分钟后,启动了另一个工作程序,但由于与分布式锁相关的异常而未能完成:

System.Net.Sockets.SocketException (104): Connection reset by peer

Processing Jobs image

我正在将MySql Storage与带有版本2.2.5的Hangfire.MySql.Core库中的选项一起使用:

new MySqlStorageOptions
  {
    TransactionIsolationLevel = IsolationLevel.ReadCommitted,
    QueuePollInterval = TimeSpan.FromSeconds(15),
    JobExpirationCheckInterval = TimeSpan.FromHours(1),
    CountersAggregateInterval = TimeSpan.FromMinutes(5),
    PrepareSchemaIfNecessary = true,
    DashboardJobListLimit = 50000,
    TransactionTimeout = TimeSpan.FromMinutes(1),
    TablesPrefix = ""
   })

我阅读了在网上和文档中找到的所有内容,并说可以将其用于:

InvisibilityTimeout = TimeSpan.FromHours(3) 

但是该参数从Hangfire版本> 1.5开始已过时。

Invisibility Timeout is obsolete

我使用的是Hangfire.Core 1.7.7,在运行30分钟后仍然出现此问题。

编辑

尝试过:

InvisibilityTimeout = TimeSpan.FromHours(3)

并且Job运行了一个小时没有问题。

我不喜欢过时的解决方案,它将在Hangfire 2.0中删除。

他们说:

  

“新的Hangfire.SqlServer实现使用普通的旧事务来   提取后台作业并将其对其他工作人员隐藏。”

-但这是为实现SQL Server而写的,我正在使用MySql Storage

有人遇到MySql Storage的相同问题吗?

1 个答案:

答案 0 :(得分:0)

我有相同的问题,使用Mysql.Core 2.2.5,hangfire core 1.7.7。 如果我没有记错的话,使用SQL Server 2017 Express时不会发生此问题。我使用sql server,但没有注意到此问题。但是,当我更改为mysql之后,就会出现此问题。 我想知道这是Hangfire.MySql.Core 2.2.5的实现。也许我们可以联系此软件包的作者以获得答案。 https://github.com/stulzq/Hangfire.MySql.Core

相关问题