WorkerService+Quartz

WorkerService真的太好用了,比WindowsService好用太多!爱了-3-

下面来记录一下步骤

1.创建WorkerService

 创建好之后,结构如下

 Program:项目入口

 Worker:自带例子

2.在NuGet下载Quartz包(Quartz.Extensions.Hosting)

 3.创建一个任务类( 继承Quartz中的IJob)

 

4.配置执行任务的时间表达式

 每天早上11点31分执行任务

5.关联任务

                    services.AddQuartz(q =>
                    {
                        q.UseMicrosoftDependencyInjectionScopedJobFactory();
                        //获取任务调度时间表达式
                        var jobKey = new JobKey("TestWorker");
                        var jobCronSchedule = hostContext.Configuration["Quartz:TestWorkerCron"];
                        //判断时间表达式是否存在
                        if (string.IsNullOrEmpty(jobCronSchedule))
                        {
                            throw new Exception($"No Quartz.NET Cron schedule found for job in configuration at configKey");
                        }
                        //在DI容器中注册任务
                        q.AddJob<TestWorker>(opts => opts.WithIdentity(jobKey));
                        //为任务添加触发器
                        q.AddTrigger(opts => opts
                            .ForJob(jobKey) //触发器链接到TestWorker
                            .WithIdentity("TestWorker-trigger") //为触发器命名
                           .WithCronSchedule(jobCronSchedule)); //使用配置中的时间表达式
                    });
                    services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);

到这一步已经完成了,直接跑起来就可以了。 它是一个控制台程序。

如果不想要控制台程序,那么接着看,设为Windows服务。

6.在NuGet下载包(Microsoft.Extensions.Hosting.WindowsServices)

 7.设置Windows服务

 .UseWindowsService()

tip:如果使用服务,不要用logger!!!logger仅是控制台程序时使用的!!!

8.发布Windows服务

首先,以管理员身份运行cmd

-----------------------------------------cmd命令--------------------------------------------
创建服务
sc.exe create 服务名称 binPath=Windows服务所在的全路径(例如:D:\其它\TestWorkerService\TestWorkerService\bin\Debug\net5.0\TestWorkerService.exe)
启动服务
sc.exe start 服务名称
停用服务
sc.exe stop 服务名称
删除服务
sc.exe delete 服务名称

9.小细节

上面创建服务的那句话哦,乍一看好像没有什么毛病,我这边正式环境可以运行,可是测试环境会报错

 选项名称包括等号。等号和值之间需要一个空格。

顾名思义就是在binPath等号后面加一个空格

Demo下载地址:https://files.cnblogs.com/files/MuZiLily/TestWorkerService.zip?t=1667294208

posted @ 2021-10-28 11:59  MuZiLily  阅读(469)  评论(0编辑  收藏  举报