ABP vNext + Hangfire:生产级定时任务与调度实践指南

🎯 ABP vNext + Hangfire:生产级定时任务与调度实践指南

通过 Hangfire + PostgreSQL 实现 ABP vNext 中的可靠后台调度体系,支持 Dashboard 授权控制、定时任务注册、队列隔离、Prometheus 监控等生产实践。


⚙️ 1. 项目背景

定时任务用于:

  • 🔁 自动同步数据
  • 📊 定时报表推送
  • 🧹 清理缓存或归档文件

Hangfire 支持持久化任务、可视化管理、失败重试,是 .NET 场景下首选调度框架。


🧱 2. 技术栈

组件 版本建议
.NET 8.0
ABP vNext 8.x
Hangfire 1.8.x
PostgreSQL ≥14
Npgsql 驱动 ≥6.0

📦 3. 安装依赖

dotnet add package Hangfire.AspNetCore
dotnet add package Hangfire.PostgreSql

✅ Hangfire 初始化流程图

在这里插入图片描述


🔧 4. 服务配置

4.1 配置文件(节选)

{
   
   
  "ConnectionStrings": {
   
   
    "Default": "Host=prod-db;Database=MyDb;Username=admin;Password=securePwd123" // 演示用,生产请勿明文
  },
  "Hangfire": {
   
   
    "Queues": [ "critical", "default", "low" ],
    "WorkerCount": 0
  }
}

⚠️ 生产建议使用 SecretProvider、Key Vault 或 Docker Secret 管理账号信息。


4.2 Web 模块注册

public override void ConfigureServices(ServiceConfigurationContext context)
{
   
   
    var config = context.Services.GetConfiguration();
    var queues = config.GetSection("Hangfire:Queues").Get<string[]>() ?? ["default"];
    var workerCount = config.GetValue<int>("Hangfire:WorkerCount", 0);
    var resolvedCount = workerCount > 0 ? workerCount : Math.Max(5, Environment.ProcessorCount * 2);

    context.Services.AddHangfire(cfg =>
    {
   
   
        cfg.UsePostgreSqlStorage(config.GetConnectionString("Default"), new PostgreSqlStorageOptions
        {
   
   
            SchemaName = "hangfire",
            PrepareSchemaIfNecessary = true,
            TransactionSynchronisationTimeout = TimeSpan.FromMinutes(1)
        });
        cfg.UseMetrics();
        cfg.UseOpenTelemetry(); // 可选:需安装 OpenTelemetry.Instrumentation.Hangfire
        cfg.UseFilter(new AutomaticRetryAttribute
        {
   
   
            Attempts = 3,
            DelaysInSeconds = new[] {
   
    60, 300, 600 }
        });
        cfg.UseFilter(new JobExpirationTimeoutAttribute(TimeSpan.FromDays(7)));
    });

    context.Services.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kookoos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值