Quartz.net使用入门(一)

quartz.config配置文件

#调度器名,无关紧要,名字任意定
quartz.scheduler.instanceName = ServerScheduler
org.quartz.scheduler.instanceId = AUTO
quartz.jobStore.type = Quartz.Simpl.RAMJobStore, Quartz

# configure thread pool info   配置数据库连接池
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool,Quartz
quartz.threadPool.threadCount = 10
quartz.threadPool.threadPriority = Normal


# job initialization plugin handles our xml reading, without it defaults are used
quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
quartz.plugin.xml.fileNames = ~/quartz_jobs.xml

# export this server to remoting context
# quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter,Quartz
# quartz.scheduler.exporter.port = 555
# quartz.scheduler.exporter.bindName = QuartzScheduler
# quartz.scheduler.exporter.channelType = tcp
# quartz.scheduler.exporter.channelName = httpQuartz

quartz_jobs.xml文件

<?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>
        <!--2.0版本中的job相当于1.x版本中的<job-detail>,这个节点是用来定义每个具体的任务的,多个任务请创建多个job节点即可-->
        <job>
            <name>sampleJob</name>  <!--任务名称,同一个group中多个job的name不能相同,若未设置group则所有未设置group的job为同一个分组(必须设置)-->
            <group>sampleGroup</group><!--任务所属分组,用于标识任务所属分组-->
            <description>获取订单汇总服务</description>
            <job-type>AllOrdersService.GetOrdersJob, AllOrdersService</job-type> <!--任务类型,任务的具体类型及所属程序集,格式:实现了IJob接口的包含完整命名空间的类名,程序集名称-->
            <durable>true</durable><!--<durable>(持久性)-如果一个Job是不持久的, 一旦没有触发器与之关联,它就会被从scheduler 中自动删除-->
            <recover>false</recover>
        </job>

        <!--trigger 任务触发器,用于定义使用何种方式触发任务(job),同一个job可以定义多个trigger ,多个trigger 各自独立的执行调度,每个trigger 中必须且只能定义一种触发器类型(calendar-interval、simple、cron)
            calendar-interval 一种触发器类型,使用较少,此处略过-->

        <trigger>
            <!--cron复杂任务触发器使用cron表达式定制任务调度-->
            <cron>
                <name>between7and10_Trigger</name> <!--触发器名称,同一个分组中的名称必须不同-->
                <group>sampleJobTriggerGroup</group><!--触发器组-->
                <description>获取订单汇总服务触发器</description>
                <job-name>sampleJob</job-name> <!--要调度的任务名称,该job-name必须和对应job节点中的name完全相同-->
                <job-group>sampleGroup</job-group>  <!--调度任务(job)所属分组,该值必须和job中的group完全相同-->

                <!--定义示例任务1 触发器 7点到10点之间 每30分钟执行一次GetOrdersJob任务-->
                <cron-expression>0 0/30 7-10 * * ?</cron-expression>
            </cron>
        </trigger>

        <trigger>
            <cron>
                <name>between11and23_Trigger</name>
                <group>sampleJobTriggerGroup</group>
                <description>获取订单汇总服务触发器2</description>
                <job-name>sampleJob</job-name>
                <job-group>sampleGroup</job-group>
              <!--定义示例任务1 触发器 11点到23点之间 每30分钟执行一次GetOrdersJob任务-->
                <cron-expression>0 0/30 11-23 * * ?</cron-expression>
            </cron>
        </trigger>
    </schedule>

</job-scheduling-data>

GetOrdersJob.cs作业

   public class GetOrdersJob : IJob
    {
        #region IJob 成员

        public void Execute(IJobExecutionContext context)
        {
             //业务逻辑操作
             //对订单的同步,统计,
        }

        #endregion
    }

Windows服务主程序GetDataService.cs:

  public partial class GetDataService : ServiceBase
    {
        private readonly ILog logger;
        private IScheduler scheduler;

        public GetDataService()
        {
            InitializeComponent();

            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
        }

        protected override void OnStart(string[] args)
        {
            scheduler.Start();
            //LogHelper.WriteFile(DateTime.Now + ":启动了服务A!");

        }

        protected override void OnStop()
        {
            scheduler.Shutdown(false);
            //LogHelper.WriteFile(DateTime.Now + ":停止执行服务A!");
        }

        protected override void OnPause()
        {
            scheduler.PauseAll();
        }

        protected override void OnContinue()
        {
            scheduler.ResumeAll();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值