QuartzNet
QuartzNet 是一个强大、开源、轻量的作业调度框架。Fireasy 提供了 QuartzNet 对 任务调度管理器 的实现。
修改配置文件如下:
- .Net Framework 下的 app.config 或 web.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="fireasy">
<section name="taskSchedulers" type="Fireasy.Common.Tasks.Configuration.TaskScheduleConfigurationSectionHandler, Fireasy.Common" />
</sectionGroup>
</configSections>
<fireasy>
<taskSchedulers default="quartz">
<scheduler name="quartz" type="Fireasy.QuartzNet.TaskScheduler, Fireasy.QuartzNet">
<jobs>
<job type="demo.TaskJob1, demo"
startTime="2020-01-01"
endTime="2022-01-01"
cron="0 */1 * * * ?"
disabled="true">
<arguments><![CDATA[{ "A1": 1, "A2": "344" }]]></arguments>
</job>
</jobs>
</scheduler>
</taskSchedulers>
</fireasy>
</configuration>
- .Net Core 下的 appsettings.json 文件
{
"fireasy": {
"taskSchedulers": {
"default": "quartz",
"settings": {
"quartz": {
"type": "Fireasy.QuartzNet.TaskScheduler, Fireasy.QuartzNet",
"jobs": [
{
"type": "demo.TaskJob1, demo",
"startTime": "2020-01-01",
"endTime": "2022-01-01",
"cron": "0 */1 * * * ?",
"disabled": true,
"arguments": "{ "A1": 1, "A2": "344" }"
}
]
}
}
}
}
}
参数的说明如下:
- startTime 任务开始的时间。
- startTime 任务结束的时间。
- cron cron 表达式,请查阅相关资料。
- disabled 是否禁用。
- arguments 初始化参数,一个
Json
字符串,可反序列化为Dictionary<string, object>
。
在 .Net Core 应用中可以使用扩展方法 AddQuartzScheduler 切换到 QuzrtzNet 任务调度,如下所示:
namespace demo
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddFireasy().AddQuartzScheduler(s =>
{
s.Add(t => t.CronExpression = "0 */1 * * * ?",
(sp) => Console.WriteLine("yes"));
s.AddAsync(t => t.CronExpression = "0 */1 * * * ?",
(sp, cancel) => Task.Run(() => Console.WriteLine("async yes")));
});
}
}
}
💡 小提示
使用 AddQuartzScheduler 方法后,配置中的 jobs 仍然有效。