1.negut引入hangfire相关包 Hangfire.Aspnetcore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorizatio
Hangfire.Aspnetcore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorization,Hangfire.MysqlStorage
"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"
},
/// <summary>
/// 任务调度
/// </summary>
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();
}
}
services.AddHangfireSetup();//任务调度
//任务调度中间件
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(); //配置各个任务
}
/// <summary>
/// 配置账号模板信息
/// </summary>
/// <returns></returns>
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}
};
}
/// <summary>
/// 配置启动
/// </summary>
/// <returns></returns>
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<IOrderItemInfoService>(_ => _.JobOSS(), "0 0 1 * * ? ", TimeZoneInfo.Local,
nameof(HangfireConfigureQueue.picturetooss));
// "0 0 1 * * ? " 每天早上七点执行定时任务更新汇率
RecurringJob.AddOrUpdate<ICurrencyInfosService>(_ => _.UpdateRateByJob(), "0 0 7 * * ? ",
TimeZoneInfo.Local, nameof(HangfireConfigureQueue.picturetooss));
}
#endregion
}
app.UseHangfireMiddleware();//Job
效果图:
结语:到此hangfire实现定时任务的配置已经全部完成。
到此这篇关于.net core 基于Hangfire+Mysql持久化实现定时任务的文章就介绍到这了,更多相关.Net Core Hangfire定时任务内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: .net core 基于Hangfire+Mysql持久化实现定时任务配置方法
本文链接: https://lsjlt.com/news/130775.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0