自己的网站在哪里找,如何做网站分析,网站建设与制作石家庄,企业培训课程安排表ASP.NET Core Web API Hangfire 前言一、安装二、相关代码1.代码片段2.代码片段3.运行效果 三、测试代码1.即发即弃作业2.延迟作业3.重复作业4.延续作业5.页面调度作业 前言 #x1f468;#x1f4bb;#x1f468;#x1f33e;#x1f4dd;记录学习成果#xff0c;以… ASP.NET Core Web API Hangfire 前言一、安装二、相关代码1.代码片段2.代码片段3.运行效果 三、测试代码1.即发即弃作业2.延迟作业3.重复作业4.延续作业5.页面调度作业 前言 记录学习成果以便温故而知新 Hangfire是一种定任务调度器 本文使用MySQL服务器 本文也参考了其他人文章的一些思路。 一、安装
NuGet安装 Hangfire.AspNetCore Hangfire.MySqlStorage 由于选择的MySQL数据库所以安装Hangfire.MySqlStorage。
二、相关代码
Program.cs中添加代码
1.代码片段
builder.Services.AddHangfire(config
{config.SetDataCompatibilityLevel(CompatibilityLevel.Version_180).UseSimpleAssemblyNameTypeSerializer().UseRecommendedSerializerSettings();config.UseStorage(new MySqlStorage(server127.0.0.1;userroot;passwordroot;databasehangfiredb;allowuservariablesTrue;,//必须允许用户自定义参数,不然面板不能使用new MySqlStorageOptions { TablesPrefix Hangfire })).UseHangfireHttpJob();
});builder.Services.AddHangfireServer();
builder.Services.AddTransientIBackgroundJobClient, BackgroundJobClient();MySQL数据连接 “server127.0.0.1;userroot;passwordroot;databasehangfiredb;allowuservariablesTrue;” 如下 .UseHangfireHttpJob() 实现的效果是可以在控制台添加任务调度。 前提是需要安装: Hangfire.HttpJob 如下代码 new MySqlStorageOptions { TablesPrefix “Hangfire” } 是制定数据库中生成的表是以Hangfire开头如下图 在测试的时候没有处理好一个小细节如果代码写成
new MySqlStorageOptions { TablesPrefix Hangfire_ }将会更好
2.代码片段
app.UseHangfireDashboard();3.运行效果
http://localhost:5279/hangfire/
三、测试代码
在项目新增控制器HangfireController及一个方法
[HttpGet(Execute)]
public void Execute(string job)
{Debug.WriteLine(job);
}在控制台作业完成 中查看执行效果。
1.即发即弃作业
[HttpGet(test1)]
public string Test1()
{string job 即发即弃作业;BackgroundJob.Enqueue(() Execute(job));return job;
}测试效果
2.延迟作业
[HttpGet(test2)]
public string Test2()
{string job 延迟作业;BackgroundJob.Schedule(() Execute(job), TimeSpan.FromMinutes(1));return job;
}测试效果
3.重复作业
[HttpGet(test3)]
public string Test3()
{string job 重复作业;RecurringJob.AddOrUpdate(job, () Execute(job), 0 * * * * ?, new RecurringJobOptions(){MisfireHandling MisfireHandlingMode.Ignorable,TimeZone TimeZoneInfo.Local,});return job;
}4.延续作业
[HttpGet(test4)]
public string Test4()
{var jobId BackgroundJob.Enqueue(() Execute(延续作业1));BackgroundJob.ContinueJobWith(jobId, () Execute(延续作业2));return 延续作业;
}测试效果
5.页面调度作业
[HttpGet(test5)]
public string Test5()
{Debug.WriteLine(页面调度作业 DateTime.Now.ToString());return 页面调度作业 DateTime.Now.ToString();
}测试效果 页面调度作业感觉像xxl-job但是操作的便捷性上个人感觉略差一点意思。