在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

为Hangfire.HttpJob实现达梦数据库存储支持

DotNet 清风 57℃ 0评论

背景

因客户需求,需要按照国产化要求使用自主可控的国产化数据库,客户这边指定使用达梦数据库,DM8。为此要更新现在使用的系统,以便达到客户的实际需求。经过排查发现系统中使用了Hangfire.HttpJob项目,在Nuget以及GitHub并未发现关于达梦数据库存储支持的组件。Hangfire.HttpJob使用的是Hangfire项目,所以新的数据库支持还需要从Hangfire下手。

Hangfire开源项目以及官方列出的扩展列表中都没有发现关于达梦数据库存储的支持。参考Hangfire开源项目以及其他数据库存储项目的实现,完成了对达梦数据库存储支持的实现。

项目

Hangfire.DMStorage 是一个扩展组件,它为 Hangfire 使用达梦数据库提供支持。

Hangfire.DMStorageHangfire ExtensionsNuget DMStorage.Hangfire

Hangfire Dashboard
HangFire.DMStorage Console

使用

安装

安装 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实现达梦数据库存储支持

喜欢 (0)or分享 (0)
支付宝扫码打赏 支付宝扫码打赏 微信打赏 微信打赏
头像
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址