Quartz.NET--AdoJobStore作业存储
来源:互联网 发布:淘宝买蔬菜种子 编辑:程序博客网 时间:2024/06/01 09:13
Quartz提供两种基本作业存储类型。第一种类型叫做RAMJobStore,它利用通常的内存来持久化调度程序信息。这种作业存储类型最容易配置、构造和运行。Quartz.net缺省使用的就是RAMJobStore。对许多应用来说,这种作业存储已经足够了。
然而,因为调度程序信息是存储在被分配在内存里面,所以,当应用程序停止运行时,所有调度信息将被丢失。如果你需要在重新启动之间持久化调度信息,则将需要第二种类型的作业存储。为了修正这个问题,Quartz.NET 提供了 AdoJobStore。顾名思义,作业仓库通过 ADO.NET把所有数据放在数据库中。数据持久性的代价就是性能降低和复杂性的提高。它将所有的数据通过ADO.NET保存到数据库可中。它的配置要比RAMJobStore稍微复杂,同时速度也没有那么快。但是性能的缺陷不是非常差,尤其是如果你在数据库表的主键上建立索引。
AdoJobStore几乎可以在任何数据库上工作,它广泛地使用Oracle, MySQL, MS SQLServer2000, HSQLDB, PostreSQL以及 DB2。要使用AdoJobStore,首先必须创建一套Quartz使用的数据库表,可以在Quartz的database\tables找到创建库表的SQL脚本。如果没有找到你的数据库类型的脚本,那么找到一个已有的,修改成为你数据库所需要的。需要注意的一件事情就是所有Quartz库表名都以QRTZ_作为前缀(例如:表"QRTZ_TRIGGERS",及"QRTZ_JOB_DETAIL")。实际上,可以你可以将前缀设置为任何你想要的前缀,只要你告诉AdoJobStore那个前缀是什么即可(在你的Quartz属性文件中配置)。对于一个数据库中使用多个scheduler实例,那么配置不同的前缀可以创建多套库表,十分有用。SQL Server代码连接如下所示:
//AdoJobStoreRunner NameValueCollection properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "TestScheduler"; properties["quartz.scheduler.instanceId"] = "instance_one"; properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; properties["quartz.jobStore.misfireThreshold"] = "60000"; properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"; properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz"; properties["quartz.jobStore.useProperties"] = "false"; properties["quartz.jobStore.dataSource"] = "default"; properties["quartz.jobStore.tablePrefix"] = "QRTZ_"; properties["quartz.jobStore.clustered"] = "true"; // if running MS SQL Server we need this properties["quartz.jobStore.selectWithLockSQL"] = "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = @lockName"; properties["quartz.dataSource.default.connectionString"] = "server=local;database=quartz;user id=sa;pwd=sa;pooling=false;"; properties["quartz.dataSource.default.provider"] = "SqlServer-20";
ISchedulerFactory sf = new StdSchedulerFactory(properties); IScheduler sched = sf.GetScheduler(); string schedId = sched.SchedulerInstanceId; int count = 1; for (int i = 0; i < 10; i++) { //作业 IJobDetail job = JobBuilder .Create<Job1>() .WithIdentity("计算作业" + i.ToString(), "组1") .RequestRecovery() // ask scheduler to re-execute this job if it was in progress when the scheduler went down... .Build(); DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger" + i.ToString(), "group1") .StartAt(runTime) .Build(); //关联任务和触发器 sched.ScheduleJob(job, trigger); } //开始任务 sched.Start();
<configuration> <configSections> <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </configSections> <quartz> <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" /> <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> <add key="quartz.threadPool.threadCount" value="10" /> <add key="quartz.threadPool.threadPriority" value="2" /> <add key="quartz.jobStore.misfireThreshold" value="60000" /> <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" /> </quartz></configuration>
- Quartz.NET--AdoJobStore作业存储
- Quartz.NET--JOB作业
- 作业调度 quartz.net
- Net作业调度(Quartz.Net)
- .NET作业调度 Quartz.NET
- Quartz.NET 实现作业调度
- Quartz.NET实现作业调度
- Net作业调度(一) -Quartz.Net入门
- Net作业调度(一) -Quartz.Net入门
- 【淘淘】Quartz作业管理和存储
- Quartz.NET作业调度框架详解
- Quartz.NET——作业调度组件
- Quartz.NET——作业调度组件
- .net下作业调度实战[quartz]
- 作业调度框架 Quartz.NET 2.0 教程
- .net下作业调度实战[quartz]
- 作业调度框架 Quartz.NET 2.0 StepByStep
- Quartz.NET作业调度框架详解
- 用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法
- WebView加载网络PDF(一)
- SO_REUSEADDR例解
- 自己写shell 解释器
- Androidpn大汇总
- Quartz.NET--AdoJobStore作业存储
- Android开发_如何调用系统默认浏览器访问
- CarParts2
- AppWidget
- okl4
- 从下拉菜单设计细节看Amazon对用户体验的把握
- [转]临界区,互斥,信号量
- .NET Framework 随笔
- [IO]判断文件或者目录是否存在