Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)

Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)

QuartzHostedService  是一个用来在Asp.Net Core 中实现 Quartz 的任务注入依赖的nuget 包:

基本示例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AspNetCoreSampleQuartzHostedService.Jobs;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Quartz;
using QuartzHostedService;

namespace AspNetCoreSampleQuartzHostedService
{
    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.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddOptions();
            services.Configure<AppSettings>(Configuration);
            services.Configure<InjectProperty>(options => { options.WriteText = "This is inject string"; });
            services.AddQuartzHostedService()
                    .AddQuartzJob<HelloJob>()
                    .AddQuartzJob<InjectSampleJob>()
                    .AddQuartzJob<HelloJobSingle>()
                    .AddQuartzJob<InjectSampleJobSingle>();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<AppSettings> settings)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseMvc();
            if (settings.Value.EnableHelloSingleJob)
            {
                app.UseQuartzJob<HelloJobSingle>(TriggerBuilder.Create().WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever()))
                .UseQuartzJob<InjectSampleJobSingle>(() =>
                {
                    return TriggerBuilder.Create()
                       .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever());
                });
            }
            if (settings.Value.EnableHelloJob)
            {
                app.UseQuartzJob<HelloJob>(new List<TriggerBuilder>
                {
                    TriggerBuilder.Create()
                    .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever()),
                    TriggerBuilder.Create()
                    .WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())
                });

                app.UseQuartzJob<InjectSampleJob>(() =>
                {
                    var result = new List<TriggerBuilder>();
                    result.Add(TriggerBuilder.Create()
                        .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()));
                    return result;
                });
            }
        }

    }
}

 

扩展方式示例:

public static class ModBusScheduler
    {
        public static void AddQuartzJobsService(this IServiceCollection services)
        {
            services.AddQuartzHostedService()
                    .AddQuartzJob<Slaver>("HAVC_Elev")
                    .AddQuartzJob<Slaver>("Lighting", "Lighting")
                    .AddQuartzJobDetail(() => JobBuilder.Create<Slaver>().WithIdentity("Meter").Build())
                    .AddQuartzJobDetail(() => JobBuilder.Create<Slaver>().WithIdentity("PowerDis").Build());
        }

        public static void UserQuartzJobsService(this IApplicationBuilder app, AppSettings settings)
        {
            app.UseQuartzJob<Slaver>("HAVC_Elev", () =>
             {
                 return TriggerBuilder.Create()
                           .WithIdentity("HAVC_Elev")
                           .UsingJobData("modbus", settings.AC_ElevatorSlave)
                           .UsingJobData("devicetype", "HAVC_Elev")
                           .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()).StartNow();
             });
} 

  

nuget 连接  https://www.nuget.org/packages/QuartzHostedService/

github地址  https://github.com/mukmyash/QuartzHostedService

 

posted @ 2019-06-11 12:59 麦壳饼 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值