ASP.NET Core 3.1 系列之 Web API 中间件篇 (三)
定时任务(Hangfire)MySQL数据库 使用教程
基础使用篇
前言
Hangfire不受特定.NET应用程序类型的限制。您可以在 ASP.NET Web应用程序 、非ASP.NET Web应用程序、控制台应用程序 或 Windows服务 中使用它。由持久存储支持。开源且免费用于商业用途。
添加NuGet包
添加包:Hangfire.AspNetCore
添加包:Hangfire.MySqlStorage
配置
修改 appsettings.json 配置文件
"ConnectionStrings": {
"HangfireConnection": "Server=localhost;Port=3306;Database=ForceDemo;Uid=root;Pwd=123456;CharSet=utf8mb4;"
}
修改 Startup.cs 类
public void ConfigureServices(IServiceCollection services)
{
//Hangfire配置
services.AddHangfire(conf => conf.UseStorage(new MySqlStorage(Configuration.GetConnectionString("HangfireConnection"), new MySqlStorageOptions { TablesPrefix = "job_" })));
//Hangfire
services.AddHangfireServer(x => new BackgroundJobServerOptions
{
ServerName = string.Format("{0}.{1}", Environment.MachineName, Guid.NewGuid().ToString())
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//Hangfire 仪表盘
//访问地址 http://localhost:5000/hangfire
app.UseHangfireDashboard();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
使用
示例代码:
[HttpGet("GetHangfireTest")]
public IActionResult GetHangfireTest()
{
BackgroundJob.Enqueue(() => Console.WriteLine("队列任务"));
BackgroundJob.Schedule(() => Console.WriteLine("延后2分钟"), TimeSpan.FromMinutes(2));
RecurringJob.AddOrUpdate(() => Console.WriteLine("每分钟执行一下"), Cron.Minutely());
return Ok();
}
更多中间件使用教程