如何定制hangfire表?

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

我需要在hangfire 表中添加一些额外的列。我不知道如何向hangfire 表添加额外的列。

任何人都可以指导我如何在hangfire 表中添加其他列以及hangfire 将如何为这些新添加的列插入值?

我正在使用hangfire fire andforget jobs,对于存储,我正在使用SQL服务器。我已使用 NuGet 包管理器在我的 .net Core 项目中安装了hangfire。

hangfire hangfire-sql
1个回答
0
投票

对于未来的访客,有两种选择可以实现此目的:

A) 使用您自己的首选方法创建一个包含 jobId 列的新表,并在计划或调用作业时将 jobId 与您的附加信息存储在该表中。

因为您拥有代码,所以您将拥有最大的灵活性。 注意:请注意,hangfire 会自动删除成功的作业(默认保留期为 24 小时),因此您的表可能会不同步。

B)覆盖hangfire存储和过程

  1. 创建一个新类
    YourCustomSqlServerStorage
    继承
    SqlServerStorage
    请参阅 github 链接
  2. 创建一个扩展来初始化此类而不是hangfire
    useSqlServerStorage
    github链接,在这个扩展中你只想用
    SqlServerStorage
    替换
    YourCustomSqlServerStorage
  3. 的初始化
  4. 在您的
    program.cs
    中调用新的扩展方法,而不是调用
    UseSqlServerStorage
  5. 在所有构造函数中的
    YourCustomSqlServerStorage
    中,查看hangfire如何调用
    Initialize()
    方法,该方法又执行install.sql脚本github链接,您想模仿它的行为来创建自己的表。

以上仅适用于表创建,您基本上必须根据需要重写类,hangfire 执行原始 SQL 查询,因此除非您相应地重写和更新查询,否则您的新列将不会被使用。

除了以下原因之外,我不会推荐第二个选项:您必须重写许多类,其中一些是内部的,而且读取和更新hangfire实际执行的代码和查询是乏味的,如果你必须更新软件包,否则事情可能会再次出错。

© www.soinside.com 2019 - 2024. All rights reserved.