quartz.net 基于数据库的简单实现

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

 1             NameValueCollection properties = new NameValueCollection();
 2
 3             // 驱动类型,这里用的mysql,目前支持如下驱动:
 4             //Quartz.Impl.AdoJobStore.FirebirdDelegate
 5             //Quartz.Impl.AdoJobStore.MySQLDelegate
 6             //Quartz.Impl.AdoJobStore.OracleDelegate
 7             //Quartz.Impl.AdoJobStore.SQLiteDelegate
 8             //Quartz.Impl.AdoJobStore.SqlServerDelegate
 9             properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.MySQLDelegate, Quartz";
10
11             // 数据源名称
12             properties["quartz.jobStore.dataSource"] = "myDS";
13
14             // 数据库版本
15             /* 数据库版本    MySql.Data.dll版本,二者必须保持一致
16              * MySql-10    1.0.10.1
17              * MySql-109   1.0.9.0
18              * MySql-50    5.0.9.0
19              * MySql-51    5.1.6.0
20              * MySql-65    6.5.4.0
21              * MySql-695   6.9.5.0
22              *             System.Data
23              * SqlServer-20         2.0.0.0
24              * SqlServerCe-351      3.5.1.0
25              * SqlServerCe-352      3.5.1.50
26              * SqlServerCe-400      4.0.0.0
27              * 其他还有OracleODP,Npgsql,SQLite,Firebird,OleDb
28             */
29             properties["quartz.dataSource.myDS.provider"] = "MySql-65";
30
31             // 连接字符串
32             properties["quartz.dataSource.myDS.connectionString"] = "server=172.17.43.120;database=JobScheduler;charset=utf8;uid=writeuser;pwd=111111";
33
34             // 事物类型JobStoreTX自动管理 JobStoreCMT应用程序管理
35             properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
36
37             // 表明前缀
38             properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
39
40             // Quartz Scheduler唯一实例ID,auto:自动生成
41             properties["quartz.scheduler.instanceId"] = "AUTO";
42
43             // 集群
44             properties["quartz.jobStore.clustered"] = "true";
45
46             ISchedulerFactory schedfDataBase = new StdSchedulerFactory(properties);
47             IScheduler sched = schedfDataBase.GetScheduler();
48
49             // 添加任务和触发器
50             IJobDetail jobDetail = JobBuilder.Create<JobTest>().WithIdentity("jobtest1", "group1").Build();
51             IJobDetail jobDetail2 = JobBuilder.Create<JobTest2>().WithIdentity("jobtest2", "group1").Build();
52
53             ITrigger simpleTrigger = (ISimpleTrigger)TriggerBuilder.Create().WithIdentity("simpleTrigger1", "group1").WithSimpleSchedule(x => x.WithIntervalInSeconds(2).WithRepeatCount(5)).Build();
54
55             ITrigger crontrigger = (ICronTrigger)TriggerBuilder.Create().WithIdentity("cronTrigger1", "group1").WithCronSchedule("0/5 * * * * ? ").Build();
56
57             sched.ScheduleJob(jobDetail, crontrigger);
58
59             sched.ScheduleJob(jobDetail2, simpleTrigger);
60
61             // 开始调度
62             sched.Start();
时间: 2024-10-13 09:11:26

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

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

我们从研究org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl.class的源码开始 public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, MessageSourceAware { //默认的用户查询sql public static final String DEF_USERS_BY_USERNAME_QUERY = "

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

一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Oracle的关系.SQL Server是微软的,因为微软系统的市场占有额,所以这款软件在市场上也占用很大份额,而Mysql是一款开源免费的数据库,我们知道关系型数据库最开始是IBM的一个实验室提出的理论,但是当时并没有被IBM公司重视,被Oracle的创始人劳伦斯·埃里森重视,发展壮大起来.但是Ora

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

Atitit.提升软件稳定性---基于数据库实现的持久化  循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1. 用一个游标last 来指示 (指针表字段last ),麻烦的,不推荐 1 1.2. (简单,推荐)使用循环次数来指示,每循环加1   (字段cirTimes),order by cirtimes 1 4. 表格设计id, cirTimes,createtime,handlerID,recID,d

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

Atitit.升级软件的稳定性---基于数据库实现持久化  循环队列 环形队列 1. 前言::选型(马) 1 2. 实现java.util.queue接口 1 3. 当前指针的2个实现方式 1 1.1. 用一个游标last 来指示 (指针表字段last ),麻烦的,不推荐 1 1.2. (简单,推荐)使用循环次数来指示,每循环加1   (字段cirTimes),order by cirtimes 1 4. 表格设计id, cirTimes,createtime,handlerID,recID,d

Spring配置Quartz例子(基于maven构建)

Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法仍然是普通类.很显然,第二种方式远比第一种方式来的灵活. 之所以在这里特别对版本作一下说明,是因为spring和quartz的整合对版本是有要求的. spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错. 至于原因,则是spring

分享哈我测试MongoDB数据库的简单代码

原文:分享哈我测试MongoDB数据库的简单代码 源代码下载地址:http://www.zuidaima.com/share/1550463424236544.htm 分布式文件存储系统,MongoDB部署安装具体可以参照: http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html Demo实现了从txt文件中逐行读取数据,存放到MongoDB数据库中的. 可参照其它Demo代码 这是一套基于Spring, Hibernate,

列式数据库的简单分析

转自:列式数据库的简单分析 这些天看数据仓库的内容,发现一个新内容——列式存储.曾经有想过把数据库行列转置作成索引,不过没有深想,没想到列式数据库已经开始发展起来了.首先看下WIKI上对列式数据库的解释: 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合与批量数据处理和即席查询.相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合与小批量的数据处理,常用于联机事务型数据处理.数据库以行.列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:EmpI

(5)基于hadoop的简单网盘应用实现1

hadoop网盘的最终效果见下面,可以实现简单的文件上传.删除.下载功能,不同用户可以登录到自己的页面进行管理. 一.准备的安装包资源 (1)hadoop1.1.2安装包 (2)bootmetro一个CSS开元框架,用来提高web前端的开发效率 (3)mysql的Jdbc驱动包 (4)上传组件 (5)mysql安装包(我的电脑是x64,x86系统的请下载对应版本即可) 二.搭建hadoop集群环境 教程见(2)虚拟机下hadoop1.1.2集群环境搭建 三.mysql5.6安装和eclipse上

基于数据库的分布式锁

使用场景: 某大型网站部署是分布式的,订单系统有三台服务器响应用户请求,生成订单后统一存放到order_info表:order_info表要求订单id(order_id)必须是唯一的,那么三台服务器怎么协同工作来确认order_id的唯一性呢?这时候就要用到分布式锁了. 分布式锁的要求: 在了解了使用场景之后,再看一下我们需要的分布式锁应该是怎样的(以方法锁为例) 这把锁要可重入(防止死锁) 这把锁最好是一个阻塞锁(根据业务考虑是否需要这条) 有高可用的获取锁跟释放锁的功能 获取锁跟释放锁的性能