博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz和TopShelf Windows服务作业调度
阅读量:4943 次
发布时间:2019-06-11

本文共 3225 字,大约阅读时间需要 10 分钟。

上一次写了一遍关于Quartz作业调度的文章

现在使用TopShelf和Quartz实现windows服务作业调度

TopShelf版本4.0

Quartz版本3.0.6

任务文件和上次文章的一样将日期写入txt文件中,TimeJob代码如下

public class TimeJob : IJob    {        public Task Execute(IJobExecutionContext context)        {            string filePath = @"D:\\log.txt";            File.AppendAllText(filePath, DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + Environment.NewLine);            Console.WriteLine(DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + Environment.NewLine);            return Task.FromResult(true);        }    }

 1.创建调度器工厂  ISchedulerFactory factory = new StdSchedulerFactory();

 2.创建任务调度器 IScheduler scheduler = null;

 3.创建任务和触发器

     scheduler = await factory.GetScheduler();

            //创建一个任务
            IJobDetail job = JobBuilder.Create<TimeJob>().WithIdentity("myJob1", "group1").Build();
            //创建一个触发器
            ITrigger trigger = TriggerBuilder.Create().WithIdentity("myTrigger1", "group1").StartNow().
                WithSimpleSchedule(a => a.WithIntervalInSeconds(10).RepeatForever()).Build();
            //将任务和触发器添加到调度器里
            await scheduler.ScheduleJob(job, trigger);

4.开始执行 scheduler.Start()

Manager代码如下

public class Manager    {        //创建调度器工厂        ISchedulerFactory factory = new StdSchedulerFactory();        //创建调度器        IScheduler scheduler = null;        public Manager() {            Init();        }        private async void Init()        {            scheduler = await factory.GetScheduler();            //创建一个任务            IJobDetail job = JobBuilder.Create
().WithIdentity("myJob1", "group1").Build(); //创建一个触发器 ITrigger trigger = TriggerBuilder.Create().WithIdentity("myTrigger1", "group1").StartNow(). WithSimpleSchedule(a => a.WithIntervalInSeconds(10).RepeatForever()).Build(); //将任务和触发器添加到调度器里 await scheduler.ScheduleJob(job, trigger); } public async void Start() { //开始执行 await scheduler.Start(); } public async void Stop() { //停止 await scheduler.Shutdown(false); } public async void Pause() { //暂停 await scheduler.PauseAll(); } public async void Continue() { //继续 await scheduler.ResumeAll(); } }

  5.调用

 

static void Main(string[] args)        {            var fac = HostFactory.New(x =>            {                x.Service
(s => { s.ConstructUsing(name => new Manager()); s.WhenStarted(m => m.Start()); s.WhenStopped(m => m.Stop()); s.WhenPaused(m => m.Pause()); s.WhenContinued(m => m.Continue()); }); x.RunAsLocalSystem(); x.SetDescription("QuartzTopShelfDemo Windows服务"); x.SetDisplayName("QuartzTopShelfDemo 服务"); x.SetServiceName("QuartzTopShelfDemoService"); }); fac.Run(); Console.ReadKey(); }

 配置安装服务

安装:TopshelfDemo.exe install
启动:TopshelfDemo.exe start
卸载:TopshelfDemo.exe uninstall

 

 

 

参考:https://topshelf.readthedocs.io/en/latest/configuration/config_api.html#service-name

转载于:https://www.cnblogs.com/ZJ199012/p/9328367.html

你可能感兴趣的文章
JqueryValidate 动态添加验证
查看>>
双活数据中心的架构
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
先行者长虹佳华超融合市场沙龙在京举行
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>
BCG与阿里研究院等联合揭秘中国互联网经济:成功的关键是什么?
查看>>
发力IoT领域 Marvell注重生态系统发展
查看>>
数据中心网络布线工程必备七大件
查看>>
20个问题揭穿冒牌数据科学家
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
KVM虚拟机在线添加网卡
查看>>
Spring解析
查看>>
支付宝签约教程及注意事项
查看>>
Linux Glibc溢出漏洞凶猛来袭 可让***者获取操作系统的控制权限
查看>>
设计模式之原则
查看>>
Maven修改全局和局部JDK版本
查看>>
设计模式——组合模式(Composite Pattern)
查看>>
java设计模式之——代理模式
查看>>