ABP+Hangfire实现定时任务

文章目录

依赖库

集成

添加DependOn

csharp 复制代码
[DependsOn(typeof(AbpBackgroundWorkersHangfireModule))]
public class AppModule: AbpModule
{
}

创建ConfigureHangfire

csharp 复制代码
private void ConfigureHangfire(IServiceCollection services,IConfiguration configuration)
{
    services.AddHangfire(config =>
    {
        config.UseSqlServerStorage(configuration.GetConnectionString("Default"));
    });
    services.AddHangfireServer(o =>
    {
    	//hangfire默认15s扫一次任务,加快到1s一次。毫秒级建议用while或者重开一个abp
    	o.SchedulePollingInterval = TimeSpan.FromSeconds(1);
	});
csharp 复制代码
public override void ConfigureServices(ServiceConfigurationContext context)
{
    var services = context.Services;
    var config = context.Configuration;
    ConfigureHangfire(services,config);
}

添加dashboard

csharp 复制代码
app.UseHangfireDashboard();
app.UseConfiguredEndpoints();

此时打开http://localhost:5000/hangfire就能看到dashboard了。

创建定时任务

HighFrequencyWorker

csharp 复制代码
public class HighFrequencyWorker : AsyncPeriodicBackgroundWorkerBase
{
    public HighFrequencyWorker(AbpAsyncTimer timer, IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory)
    {
        Timer.Period = 1000;
    }

    protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
    {
        Logger.LogDebug("我是高频");
    }
}

CronWorker

csharp 复制代码
public class CronWorker : HangfireBackgroundWorkerBase
{
    public CronWorker()
    {
        RecurringJobId = "Cron Worker";
        CronExpression = "0 0/1 * * * ?";
    }

    public override async Task DoWorkAsync(CancellationToken cancellationToken = default)
    {
        Logger.LogDebug($"我是Cron,当前时间{DateTime.Now.ToLongTimeString()}");
    }
}

在OnApplicationInitialization里注册

csharp 复制代码
context.AddBackgroundWorkerAsync<HighFrequencyWorker>().Wait();
context.AddBackgroundWorkerAsync<CronWorker>().Wait();
相关推荐
大阿明4 小时前
Spring Boot(快速上手)
java·spring boot·后端
墨香幽梦客5 小时前
API集成技术规范:RESTful与GraphQL在企业系统对接中的应用对比
后端·restful·graphql
FL16238631295 小时前
[C#][winform]segment-anything分割万物部署onnx模型一键抠图演示
开发语言·c#
刀法如飞6 小时前
AI编程时代,为什么35岁以上程序员会更吃香?
人工智能·后端·ai编程
小码哥_常7 小时前
Spring Boot 遇上 HMAC-SHA256,API 安全大升级!
后端
小码哥_常7 小时前
10分钟极速掌握!SpringBoot+Vue3整合SSE实现实时消息推送
后端
love530love7 小时前
OpenClaw 手机直连配置全流程
人工智能·windows·python·智能手机·c#·agent·openclaw
大黄说说8 小时前
深入 Go 语言 GMP 调度模型:高并发的秘密武器
后端
bcbobo21cn8 小时前
C# byte类型和byte数组的使用
开发语言·c#·字节数组·byte类型
云原生指北9 小时前
Omnipub E2E 测试文章 - 自动化验证
后端