灭火-30分钟后重复执行长时间的作业

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

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

问题是,在工作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中删除。

他们说:

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

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

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

c# hangfire
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.