背景
因客户需求,需要按照国产化要求使用自主可控的国产化数据库,客户这边指定使用达梦数据库,DM8
。为此要更新现在使用的系统,以便达到客户的实际需求。经过排查发现系统中使用了Hangfire.HttpJob
项目,在Nuget
以及GitHub
并未发现关于达梦数据库存储支持的组件。Hangfire.HttpJob
使用的是Hangfire
项目,所以新的数据库支持还需要从Hangfire
下手。
在Hangfire
开源项目以及官方列出的扩展列表中都没有发现关于达梦数据库存储的支持。参考Hangfire开源项目以及其他数据库存储项目的实现,完成了对达梦数据库存储支持的实现。
项目
Hangfire.DMStorage
是一个扩展组件,它为 Hangfire
使用达梦数据库提供支持。
Hangfire.DMStorageHangfire ExtensionsNuget DMStorage.Hangfire


使用
安装
安装 Hangfire.DMStorage
,在 NuGet
包管理器控制台运行以下命令以安装 Hangfire.DMStorage
:
Install-Package DMStorage.Hangfire
用法
使用以下方法之一进行初始化
一、可以使用带有连接字符串构造函数参数的新实例创建 DMStorage
,并通过 UseStorage
方法将其传递给配置
GlobalConfiguration.Configuration.UseStorage(
new DMStorage(connectionString));
二、可以将一个或多个选项作为参数传递给 DMStorage
GlobalConfiguration.Configuration.UseStorage(
new DMStorage(
connectionString,
new DMStorageOptions
{
TransactionIsolationLevel =IsolationLevel.ReadCommitted,
QueuePollInterval = TimeSpan.FromSeconds(15),
JobExpirationCheckInterval = TimeSpan.FromHours(1),
CountersAggregateInterval = TimeSpan.FromMinutes(5),
PrepareSchemaIfNecessary = true,
DashboardJobListLimit = 50000,
TransactionTimeout = TimeSpan.FromMinutes(1),
SchemaName= "SYSDBA"
}));
三、在Hangfire.HttpJob
中使用
context.Services.AddHangfire(x => x.UseStorage(new DMStorage(connectionString, new DMStorageOptions()
{
TransactionIsolationLevel = System.Data.IsolationLevel.ReadCommitted,
QueuePollInterval = TimeSpan.FromSeconds(15),
JobExpirationCheckInterval = TimeSpan.FromHours(1),
CountersAggregateInterval = TimeSpan.FromMinutes(5),
PrepareSchemaIfNecessary = true,
DashboardJobListLimit = 50000,
TransactionTimeout = TimeSpan.FromMinutes(1),
SchemaName = "SYSDBA"
}))
.UseConsole()
.UseHangfireHttpJob());
参数描述
以下为可选的参数描述
- TransactionIsolationLevel – 事务隔离级别。默认是读取已提交。
- QueuePollInterval – 作业队列轮询间隔。默认值为15秒。
- JobExpirationCheckInterval – 作业到期检查间隔(管理过期记录)。默认值为1小时。
- CountersAggregateInterval – 聚合计数器的间隔。默认为5分钟。
- PrepareSchemaIfNecessary – 如果设置为true,则创建数据库表。默认是true。
- DashboardJobListLimit – 仪表板作业列表限制。默认值为50000。
- TransactionTimeout – 事务超时。默认为1分钟。
- SchemaName – 模式.
转载请注明:清风亦平凡 » 为Hangfire.HttpJob实现达梦数据库存储支持