.net(core,基于Hangfire+Mysql持久化实现定时任务配置方法)
.net,core,基于Hangfire+Mysql持久化实现定时任务配置方法,恰卡网带你了解更多相关信息。
1.negut引入hangfire相关包
Hangfire.AspNetCore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorization,Hangfire.MySqlStorage
2.Appsetting 配置hangfire资源
"HangFire": {
"Connection": "Server=127.0.0.1;uid=root;pwd=wakamysql666;database=Hangfire_DB;AllowLoadLocalInfile=true;Allow User Variables=True;",
"pathMatch": "/hangfire",
"Login": "login",
"PasswordClear": "pwd"
},
3.自定义扩展类
////// 任务调度 /// public static class HangfireSetup { public static void AddHangfireSetup(this IServiceCollection services) { if (services == null) throw new ArgumentNullException(nameof(services)); if (services == null) throw new ArgumentNullException(nameof(services)); services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)//此方法 只初次创建数据库使用即可 .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseStorage(new MySqlStorage(Appsettings.app("HangFire", "Connection"), new MySqlStorageOptions { TransactionIsolationLevel = (IsolationLevel?) System.Data.IsolationLevel.ReadCommitted, //事务隔离级别。默认是读取已提交 QueuePollInterval = TimeSpan.FromSeconds(15), //- 作业队列轮询间隔。默认值为15秒。 JobExpirationCheckInterval = TimeSpan.FromHours(1), CountersAggregateInterval = TimeSpan.FromMinutes(5), PrepareSchemaIfNecessary = false, // 如果设置为true,则创建数据库表。默认是true DashboardJobListLimit = 50000, TransactionTimeout = TimeSpan.FromMinutes(1), TablesPrefix = "Hangfire" }))); services.AddHangfireServer(); } }
4.在startupConfigureServices注入扩展
services.AddHangfireSetup();//任务调度
5.配置MIddleware
//任务调度中间件
public static class HangfireMiddleware
{
public static void UseHangfireMiddleware(this IApplicationBuilder app)
{
if (app == null) throw new ArgumentNullException(nameof(app));
app.UseHangfireServer(); //配置服务//ConfigureOptions()
app.UseHangfireDashboard(Appsettings.app("HangFire", "pathMatch"), HfAuthor()); //配置面板
//BackgroundJob.Enqueue(() => Console.WriteLine("Hello world from Hangfire!"));
HangfireService(); //配置各个任务
}
///
/// 配置账号模板信息
///
///
public static DashboardOptions HfAuthor()
{
var filter = new BasicAuthAuthorizationFilter(
new BasicAuthAuthorizationFilterOptions
{
SslRedirect = false,
RequireSsl = false,
LoginCaseSensitive = false,
Users = new[]
{
new BasicAuthAuthorizationUser
{
Login = Appsettings.app("HangFire", "Login"), //可视化的登陆账号
PasswordClear = Appsettings.app("HangFire", "PasswordClear") //可视化的密码
}
}
});
return new DashboardOptions
{
Authorization = new[] {filter}
};
}
///
/// 配置启动
///
///
public static BackgroundJobServerOptions ConfigureOptions()
{
return new()
{
Queues = new[] {"Job", nameof(HangfireConfigureQueue.picturetooss)}, //队列名称,只能为小写
WorkerCount = Environment.ProcessorCount * 5, //并发任务
ServerName = "HangfireServer" //代表服务名称
};
}
#region 配置服务
public static void HangfireService()
{
// "0 0 1 * * ? " 每天凌晨一点执行阿里云OSS
RecurringJob.AddOrUpdate(_ => _.JobOSS(), "0 0 1 * * ? ", TimeZoneInfo.Local,
nameof(HangfireConfigureQueue.picturetooss));
// "0 0 1 * * ? " 每天早上七点执行定时任务更新汇率
RecurringJob.AddOrUpdate(_ => _.UpdateRateByJob(), "0 0 7 * * ? ",
TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss));
}
#endregion
}
6.startupConfigure配置使用中间件
app.UseHangfireMiddleware();//Job
效果图:
结语:到此hangfire实现定时任务的配置已经全部完成。
到此这篇关于.net core 基于Hangfire+Mysql持久化实现定时任务的文章就介绍到这了,更多相关.net core Hangfire定时任务内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!
推荐阅读
-
.Net Core怎么解决WebAPI中返回时间格式带T的问题
.Net Core怎么解决WebAPI中返回时间格式带T的问题这篇...
-
ASP.NET的Core AD域登录过程怎么实现
ASP.NET的Core AD域登录过程怎么实现本文小编为大家详细...
-
.NET Core如何使用Worker Service创建服务
.NET Core如何使用Worker Service创建服务这篇...
-
ASP.NET Core Zero模块系统的示例分析
ASP.NET Core Zero模块系统的示例分析这篇文章主要为...
-
基于NET Core的Nuget包制作、发布和运用方法
基于NET Core的Nuget包制作、发布和运用方法这篇“基于N...
-
.Net Core服务治理Consul健康检查方法是什么
.Net Core服务治理Consul健康检查方法是什么这篇文章主...
-
.Net Core Ocelot超时、熔断、限流的概念是什么
.Net CoreOcelot超时、熔断、限流的概念是什么本篇内...
-
C#怎么用ASP.NET Core开发学生管理系统
C#怎么用ASP.NET Core开发学生管理系统本篇内容介绍了“...
-
.Net Core微服务网关Ocelot基础知识有哪些
.Net Core微服务网关Ocelot基础知识有哪些本篇内容介绍...
-
omni core api使用方法有哪些
omnicoreapi使用方法有哪些这篇文章主要讲解了“omn...
