博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NET - .NET Core 之 Abp 整合 Quartz
阅读量:4051 次
发布时间:2019-05-25

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

介绍

Quartz是一个功能齐全、开源的作业调度系统,从最小的应用程序到大型企业系统都可以使用。

Abp模板工程中已经整合了Abp.Quartz包

 

ASP.NET模板文件有一个内置的持久后台作业队列和后台工作程序系统。如果你对你的后台工作人员有高级的调度要求,Quartz可以是一个不错的选择。Hangfire也可以是持久后台作业队列的一个很好的替代方案。

 

安装

将abp.quartz的NuGet包安装到你的项目中,并为你的模块AbpQuartzModule添加DependsOn属性:

[DependsOn(typeof (AbpQuartzModule))]public class YourModule : AbpModule{    //...}

 

创建Job

要创建一个新作业,您可以实现Quartz的IJob接口,或者从JobBase类(定义在Abp.Quartz包中)派生,该类具有一些用于日志记录和本地化的helper属性/方法。一个简单的作业类如下所示:

public class MyLogJob : JobBase, ITransientDependency{    public override Task Execute(IJobExecutionContext context)    {        Logger.Info("Executed MyLogJob..!");        return Task.CompletedTask;    }}

 

Schedule Jobs

IQuartzScheduleJobManager用于调度作业。您可以将它注入到您的类中(或者您可以解析它并在模块的PostInitialize方法中使用它)来调度作业。调度作业的控制器示例:

public class HomeController : AbpController{    private readonly IQuartzScheduleJobManager _jobManager;    public HomeController(IQuartzScheduleJobManager jobManager)    {        _jobManager = jobManager;    }            public async Task
ScheduleJob() { await _jobManager.ScheduleAsync
( job => { job.WithIdentity("MyLogJobIdentity", "MyGroup") .WithDescription("A job to simply write logs."); }, trigger => { trigger.StartNow() .WithSimpleSchedule(schedule => { schedule.RepeatForever() .WithIntervalInSeconds(5) .Build(); }); }); return Content("OK, scheduled!"); }}

 

遇到的问题

  1. 运行工程提示No Compant "Abp.xxxx.Configuration" was found.
  2. 运行工程提示No Compant "Abp.xxxx.IRepository" was found.

 

 

以上两个问题都是因为AbpModule类上缺少DependsOn, 补充以下Depends

[DependsOn(    typeof(EdgeServerApplicationModule),    typeof(EdgeServerEntityFrameworkCoreModule),    typeof(AbpAspNetCoreModule),         typeof(AbpQuartzModule))]    public class XXXBackgroundTasksModule : AbpModule    {

 

注意:要在AbpModule中的Initialize方法中,替换数据库默认的连接字符串

public override void Initialize() {    Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(XXXConsts.ConnectionStringName);               IocManager.RegisterAssemblyByConvention(typeof(XXXBackgroundTasksModule).GetAssembly());}

 

转载地址:http://amnci.baihongyu.com/

你可能感兴趣的文章
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>