一、介绍

今天是这个系列的最后一篇文章了,主要功能说的差不多了,我们来看看其他相关的内容。话说回来,虽然是这个系列的最后一篇文章,并不代表Quartz的东西就这么点,学习阶段,就这些了,如果以后有了使用心得,再增加进来。废话少说,开始我们今天的学习吧。

二、Quartz.Net其他功能

Quartz以模块化方式构建,因此要使其运行,需要将几个组件“拼接”在一起。 幸运的是,有一些助手可以实现这一目标。

在Quartz可以完成其工作之前需要配置的主要组件是:

1)、ThreadPool

2)、JobStore

3)、数据源(如有必要)

4)、调度程序本身

自从引入基于任务的作业以来,线程池已经发生了很大变化。 TODO文档更多

JobStores 和 DataSrouces 在本教程的第9课中进行了讨论。 值得注意的是,所有 JobStores 都实现了 IJobStore 接口 - 如果其中一个捆绑的JobStore不能满足您的需求,那么您可以创建自己的。
            
            最后,您需要创建Scheduler实例。 需要为Scheduler本身指定一个名称并交给JobStore和ThreadPool的实例。

1、StdSchedulerFactory

StdSchedulerFactory 是 ISchedulerFactory 接口的实现。 它使用一组属性(NameValueCollection)来创建和初始化Quartz Scheduler。 这些属性通常存储在文件中并从文件中加载,但也可以由程序创建并直接传递给工厂。 只需在工厂类实例上调用 getScheduler() 就可以生成调度程序,初始化它(及其ThreadPool,JobStore和DataSources),并返回其公共接口的句柄。

Quartz发行版的“docs / config”目录中有一些示例配置(包括属性的描述)。 您可以在Quartz文档的“参考”部分下的“配置”手册中找到完整的文档。

2、DirectSchedulerFactory

DirectSchedulerFactory 是另一个 SchedulerFactory 实现。 对于那些希望以更加程序化的方式创建 Scheduler 实例的人来说,它非常有用。 由于以下原因,通常不鼓励使用它:(1)它要求用户更好地理解他们正在做什么,以及(2)它不允许声明性配置-或者换句话说,您最终硬编码了调度程序的所有设置。

3、Logging

Quartz.NET 使用 LibLob 库来满足其所有日志记录需求。 Quartz 不会产生很多日志信息——通常只是在初始化期间产生一些信息,然后在 Jobs 执行期间只产生关于严重问题的消息。为了“优化”日志设置(比如输出量和输出位置),您需要实际配置所选择的日志框架,因为 LibLog 主要将工作委托给更成熟的日志框架,如log4net、serilog等。

4、高级(企业)功能

集群:集群目前只适用于 AdoJobstore(JobStoreTX)。功能包括负载平衡和作业故障转移(如果JobDetail的“请求恢复”标志设置为true)。
            
                通过将“quartz.jobStore.clustered”属性设置为“true”来启用群集。 集群中的每个实例都应使用相同的quartz属性副本。 例外情况是使用相同的属性,具有以下允许的例外:不同的线程池大小,以及“quartz.scheduler.instanceId”属性的不同值。 集群中的每个节点必须具有唯一的instanceId,通过将“AUTO”作为此属性的值放置,可以轻松完成(不需要不同的属性文件)。

永远不要在不同的机器上运行群集,除非它们的时钟使用某种形式的时间同步服务(守护进程)进行同步,这些服务定期运行(时钟必须在彼此的秒内)。 如果您不熟悉如何执行此操作,请访问http://www.boulder.nist.gov/timefreq/service/its.htm。

永远不要针对运行任何其他实例的同一组表启动非群集实例。 您可能会收到严重的数据损坏,并且肯定会遇到不正常的行为。

5、Quartz.Net 其他功能

1)、Plug-Ins(插件)

Quartz提供了一个接口(ISchedulerPlugin),用于插入附加功能。

Quartz.Plugins 命名空间中可以找到 Quartz 附带的以提供各种实用功能的插件。 它们提供的功能包括在调度程序启动时自动调度作业,记录作业历史记录和触发事件,以及确保调度程序在虚拟机退出时干净地关闭。

2)、JobFactory

触发器触发时,与其关联的Job将通过Scheduler上配置的JobFactory实例化。 默认的JobFactory只是激活作业类的新实例。 您可能希望创建自己的JobFactory实现来完成诸如让应用程序的IoC或DI容器生成/初始化作业实例之类的事情。

请参阅 IJobFactory 接口和相关的 Scheduler.SetJobFactory(fact)方法。

3)、‘Factory-Shipped’ Jobs(工厂预装的一些有用的任务作业)

Quartz还提供了许多实用工具,您可以在应用程序中使用它们来执行诸如发送电子邮件和调用远程对象之类的操作。 可以在Quartz.Jobs命名空间中找到这些开箱即用的作业。
            
        三、总结

好了,今天就写到这里了。这个系列的内容先暂停吧,以后有好的内容再更新了。还是老规矩,我把英文原文地址发出来,英文好的可以直接看英文,理解的会更好。地址如下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/configuration-resource-usage-and-scheduler-factory.html,这篇文章是起始文章,我今天写的这篇文章把后面的所有的内容写在了一起。

不忘初心,继续努力。

Quartz.Net进阶之七:QuartzNet其他的功能简述的更多相关文章

  1. Bing Maps进阶系列四:路由功能服务(RouteService)

    Bing Maps进阶系列四:路由功能服务(RouteService) Bing Maps提供的路由功能服务(RouteService)可以实现多方位的计算地图上的路线指示,路径行程等功能,比如说实现 ...

  2. visual studio调试功能简述

    vs调试简述 1.调试功能简述 vs提供了很强大的调试功能,能够让我们一步步执行中找到每个变量的值,便于查错改错.很多IDE都有调试功能,在使用调试功能时,记得先创建一个项目,哪怕是一个文件,也创建一 ...

  3. Hadoop YARN学习之组件功能简述(3)

    Hadoop YARN学习之组件功能简述(3) 1. YARN的三大组件功能简述: ResourceManager(RM)是集群的资源的仲裁者, 它有两部分:一个可插拔的调度器和一个Applicati ...

  4. SAP Marketing Cloud功能简述(五) : 销售计划管理

    Grace前四篇介绍SAP Marketing Cloud的文章: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Cloud ...

  5. SAP Marketing Cloud功能简述(四) : 线索和客户管理

    这个系列的前三篇文章Grace Dong已经给大家带来了下面的内容: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Clou ...

  6. SAP Marketing Cloud功能简述(三) 营销活动内容设计和产品推荐

    Grace的前两篇文章: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Cloud功能简述(二) : Target Grou ...

  7. SAP Marketing Cloud功能简述(二) : Target Group

    这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profi ...

  8. Net作业调度(三) — Quartz.Net进阶

    介绍 前面介绍Quartz.Net的基本用法,但在实际应用中,往往有更多的特性需求,比如记录job执行的执行历史,发邮件等. 阅读目录 Quartz.Net插件 TriggerListener,Job ...

  9. Quartz.Net进阶之六:详述 JobStores

    一.介绍 今天开始学习 JobStore,别的先不说,也不用翻译软件来翻译,直接从字面意思看来理解一下.我第一眼的感觉就是 job 是任务的意思,Store 是商店的意思,连起来就是可以存储 Job ...

随机推荐

  1. JavaWeb——<c:forEach varStatus="status">

    我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行.偶数行差异:最后一行特殊处理等等.先就varStatus属性常用参数总结下: $ ...

  2. QVector也是隐式数据共享的

    Behind the scenes, QString uses implicit sharing (copy-on-write) to reduce memory usage and to avoid ...

  3. AND 初识

    框架

  4. python 获取中文拼音首字母;判断文件夹是否存在

    1.如何获取中文字符串的首字母 import pinyin #输入name def get_pinyin_first_alpha(name): return "".join([i[ ...

  5. EF_简单的增删改查

    EF分为三种code_first,model_first,dabase_first这三种模式,网上的例子有好多,但是用了之后感觉实际中都不是这么用的,此处记录写下来日后用的着了可以快速应用,记录如下: ...

  6. python学习Day10 函数的介绍(定义、组成、使用)

    今日学习内容: 1.什么是函数 :函数就是一个含有特定功能的变量,一个解决某问题的工具 函数的定义:通过关键字def + 功能名字():代码体(根据需求撰写代码逻辑) 2.为什么要用函数:可以复用:函 ...

  7. jmeter学习笔记--线程组

    jmeter组件:线程组 是什么? 进程:一个正在执行的程序对应一个进程 线程:进程中的执行线索(一个进程中有多个执行线索) 线程组:按照线程性质对线程进行分组 并发执行:多个线程同时进行    特点 ...

  8. 第一次C语言程序设计

    C语言程序实验报告 实验项目: 1.字符与ASCII码 2.运算符与表达式的应用 3.顺序结构应用程序 4.数学函数的算法描述 5.鸡兔同笼的算法描述 6.确定坐标的算法描述 姓名:张时锋 实验地点: ...

  9. echarts饼图去除鼠标移入高亮

    1:如果echarts的js文件为压缩版本,在编辑器打开去掉t.on("mouseover",c).on("mouseout",d)这一行,如果js文件为非压缩 ...

  10. java实现将包含多个<REC>的文件拆成若干只包含一个<REC>的文件

    遍历文件夹里的文件,将包含多个<REC>的文件拆成若干只包含一个<REC>的文件 package com.prepub; import java.io.BufferedRead ...