我有处理一些繁重数据的工作,它将运行一个多小时。
问题是,工作30分钟后,启动了另一个工作程序,但由于与分布式锁相关的异常而未能完成:
System.Net.Sockets.SocketException (104): Connection reset by peer
我正在将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
的相同问题吗?
答案 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