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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM