前面介绍的任务的创建执行是通过代码来实现的,当要添加一个任务的时候就非常的不灵活,做不到热插拔。而通过配置文件的方式实现配置化,可以做到在添加一个任务的话,我们可以新建一个类库来定义Job做到热插拔。
具体实现方法也很简单,创建一个配置文件quartz_job.config,其定义了 CheckPaymentStateJob 和 CheckPaymentStateTrigger1的一个配置。
<?xml version="1.0" encoding="UTF-8"?> <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> <processing-directives> <overwrite-existing-data>true</overwrite-existing-data> </processing-directives> <schedule> <job> <name>CheckPaymentStateJob</name> <group>CheckStateGroup</group> <description>支付状态回调检查</description> <job-type>DispatcherProject.QuartzNet.CheckJob.CheckPaymentStateJob,DispatcherProject.QuartzNet</job-type> <durable>true</durable> <recover>false</recover> </job> <trigger> <cron> <name>CheckPaymentStateTrigger1</name> <group>CheckState</group> <job-name>CheckPaymentStateJob</job-name> <job-group>CheckStateGroup</job-group> <cron-expression>0 0/1 * * * ?</cron-expression> </cron> </trigger> </schedule> </job-scheduling-data>
而最后需要做的就是将该配置文件添加到Scheduler中就可以了。
XMLSchedulingDataProcessor processor = new XMLSchedulingDataProcessor(new SimpleTypeLoadHelper()); await processor.ProcessFileAndScheduleJobs("~/config/quartz_job.config", scheduler);