前面简单学习了通过XML配置或者内存指定的方式实现调度任务。但此用法实战用途较小,企业上多需要分布式集群的方式。quart团队也考虑到了这点,于是有了我们今天要学习的。基于数据库实现分布式。

             NameValueCollection properties = new NameValueCollection();

             // 驱动类型,这里用的mysql,目前支持如下驱动:
//Quartz.Impl.AdoJobStore.FirebirdDelegate
//Quartz.Impl.AdoJobStore.MySQLDelegate
//Quartz.Impl.AdoJobStore.OracleDelegate
//Quartz.Impl.AdoJobStore.SQLiteDelegate
//Quartz.Impl.AdoJobStore.SqlServerDelegate
properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.MySQLDelegate, Quartz"; // 数据源名称
properties["quartz.jobStore.dataSource"] = "myDS"; // 数据库版本
/* 数据库版本 MySql.Data.dll版本,二者必须保持一致
* MySql-10 1.0.10.1
* MySql-109 1.0.9.0
* MySql-50 5.0.9.0
* MySql-51 5.1.6.0
* MySql-65 6.5.4.0
* MySql-695 6.9.5.0
* System.Data
* SqlServer-20 2.0.0.0
* SqlServerCe-351 3.5.1.0
* SqlServerCe-352 3.5.1.50
* SqlServerCe-400 4.0.0.0
* 其他还有OracleODP,Npgsql,SQLite,Firebird,OleDb
*/
properties["quartz.dataSource.myDS.provider"] = "MySql-65"; // 连接字符串
properties["quartz.dataSource.myDS.connectionString"] = "server=172.17.43.120;database=JobScheduler;charset=utf8;uid=writeuser;pwd=111111"; // 事物类型JobStoreTX自动管理 JobStoreCMT应用程序管理
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"; // 表明前缀
properties["quartz.jobStore.tablePrefix"] = "QRTZ_"; // Quartz Scheduler唯一实例ID,auto:自动生成
properties["quartz.scheduler.instanceId"] = "AUTO"; // 集群
properties["quartz.jobStore.clustered"] = "true"; ISchedulerFactory schedfDataBase = new StdSchedulerFactory(properties);
IScheduler sched = schedfDataBase.GetScheduler(); // 添加任务和触发器
IJobDetail jobDetail = JobBuilder.Create<JobTest>().WithIdentity("jobtest1", "group1").Build();
IJobDetail jobDetail2 = JobBuilder.Create<JobTest2>().WithIdentity("jobtest2", "group1").Build(); ITrigger simpleTrigger = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("simpleTrigger1", "group1").WithSimpleSchedule(x => x.WithIntervalInSeconds().WithRepeatCount()).Build(); ITrigger crontrigger = (ICronTrigger)TriggerBuilder.Create().WithIdentity("cronTrigger1", "group1").WithCronSchedule("0/5 * * * * ? ").Build(); sched.ScheduleJob(jobDetail, crontrigger); sched.ScheduleJob(jobDetail2, simpleTrigger); // 开始调度
sched.Start();

quartz.net 基于数据库的简单实现的更多相关文章

  1. SpringBoot基于数据库实现简单的分布式锁

    本文介绍SpringBoot基于数据库实现简单的分布式锁. 1.简介 分布式锁的方式有很多种,通常方案有: 基于mysql数据库 基于redis 基于ZooKeeper 网上的实现方式有很多,本文主要 ...

  2. Quartz.net基于数据库的任务调度管理(Only.Jobs)

    一 前言: 各大调度组件优缺点在这就不讨论了,使用Quartz.net是因为它可以执行秒级任务. Only.Jobs 项目通过将各Job存储在数据库中,启动一个专门的Job管理任务来循环调度各Job的 ...

  3. 为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...

  4. Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列

    Atitit.提升软件稳定性---基于数据库实现的持久化  循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1 ...

  5. 数据库中简单的增删改查(CRUD)

    一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...

  6. Ecside基于数据库的过滤、分页、排序

    首先ecside展现列表.排序.过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果您对原版EC的retrieveRowsCallback.sortRowsCallback.fi ...

  7. Atitit.升级软件的稳定性---基于数据库实现持久化 循环队列 循环队列

    Atitit.升级软件的稳定性---基于数据库实现持久化  循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1 ...

  8. spring security基于数据库表进行认证

    我们从研究org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl.class的源码开始 public class JdbcDaoI ...

  9. SpringBoot基于数据库的定时任务实现

    在我们平时开发的项目中,定时任务基本属于必不可少的功能,那大家都是怎么做的呢?但我知道的大多都是静态定时任务实现. 基于注解来创建定时任务非常简单,只需几行代码便可完成.实现如下: @Configur ...

随机推荐

  1. block的是发送信号的线程,又不是处理槽函数的线程

    请问UI线程给子线程发信号,应该用哪种连接方式? 如果子线程正在执行一个函数,我发射信号去执行子线程的另一个函数,那么此时子线程到底会执行什么呢? 用信号量做的同步.第一把信号槽的事件丢到线程的事件队 ...

  2. C++ Prime:指针和const

    与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; / ...

  3. xPath Helper

    整个抓取使用了 xpath.正则表达式.消息中间件.多线程调度框架(参考).xpath 是一种结构化网页元素选择器,支持列表和单节点数据获取,他的好处可以支持规整网页数据抓取.我们使用的是google ...

  4. Colour your Log4Net events in your RichTextBox zz

    You’re most probably here because you have already read my article How to watch your log through you ...

  5. RedHat/CentOS系统信息查看命令大全

    系统# uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo   ...

  6. linux 命令拾遗

    man ascii 这个命令会打印出八进制.十六进制和十进制的ASCII码表. xxd xxd可以生成所给与文件的十六进制拷贝,也可以将编辑好的十六进制拷贝还原成二进制格式.它也可以将十六进制拷贝输出 ...

  7. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf4

    CanvasRenderingContext2D对象中用于平移.旋转坐标系的方法 镜像 scale(1,-1)绘制垂直镜像:scale(-1,1)绘制水平镜像 自定义的坐标变换 transform() ...

  8. How to install Apache Server on Windows

    Note Those of you interested in the Apache 2.0.X tutorial, it has been abandon and I will no longer ...

  9. Hdu 5213-Lucky 莫队,容斥原理,分块

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5213 Lucky Time Limit: 6000/3000 MS (Java/Others)    Me ...

  10. UVA 11802 All Your Bases Belong to Us

    题意:这个题题意个人觉得蛮难懂的....意思就是求,把十进制下的n!转化成m进制,末位有且仅有k个连续的0.告诉n和k,求满足题意的m有多少个. 1<= k <= 10^15,n < ...