文章目录
依赖库
集成
添加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();
