OracleQuartz.net官方开发指南 第九征缴: JobStore

JobStore负责维持对具有scheduler
“工作多少”追踪,这些工作多少包括:job(任务),trigger(触发器),calendar(日历)等。为你的Quartz
scheduler选择适用的JobStore是那个重要的如出一辙步,幸运的是,如果您掌握了不同的JobStore之间的距离,那么选择虽变得非常简单。在供有scheduler
实例的SchedulerFactory的性质文件被宣称scheduler所使用的JobStore(以及她的配备)。

流动:不要以代码中一直下JobStore实例,处于某些原因,很多人数算计这么做。JobStore是由Quartz自身以背后使用。你必报(通过安排)Quartz使用谁JobStore,而你只是当您的代码中使用Scheduler接口完成工作。

RAMJobStore

RAMJobStore是极简易的JobStore,也是性最好好之(根据CPU时间)。从名字就好直观地看有,RAMJobStore将持有的数量还保留在RAM中。这即是干吗她闪电般的飞和这么好地配置。缺点就是当以了时怀有的日程信息还见面丢掉,这意味RAMJobStore不克满足Jobs和Triggers的持久性(“non-volatility”)。对于有些应用来说,这是得接受之,甚至是可望的行事。但是于任何以来说,这将凡难。

为了用RAMJobStore(假设你用DirectSchedulerFactory),指使简单地以接近名Quartz.Simpl.RAMJobStore作为你的quartz的配置值。

配置
Quartz使用
RAMJobStore

<quartz>

         <add
key=”quartz.jobStore.type” value=”Quartz.Simpl.RAMJobStore, Quartz” />

</quartz>

此没有任何急需之顾虑之配置。
Qiartz.net缺省利用的即是RAMJobStore.

ADO.NET
Job Store (AdoJobStore)

基于ADO.NET的
job store 目前在开发中,还设有很多的bug.
从0.6版本开始

AdoJobStore基本上可以据此了.

AdoJobStore的命名也死恰当,它将有所的数经过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实例,那么配置不同之前缀可以创造多法库表,十分立竿见影。

比方数据库表已经创造,在布局与起步AdoJobStore之前,就需要作出一个一发要之决策。你而控制于您的使用被要什么种的作业。如果未思以scheduling命令绑到其他的业务上,那么您得通过对JobStore使用JobStoreTX来让Quartz帮您管理事务(这是最最广的选项)。

说到底的疑云就是如何立获得数据库联网的数据源(DataSource)。Quartz属性中定义数据源是通过提供具有接数据库的信息,让Quartz自己创办与管制数据源。

设若采取AdoJobStore(假定使用StdSchedulerFactory),首先需安装Quartz配置中之quartz.jobStore.type属性为Quartz.Impl.AdoJobStore.JobStoreTX, Quartz。

配置
Quartz使用
JobStoreTx

quartz.threadPool.type
= Quartz.Simpl.SimpleThreadPool,
Quartz

下同样步,需要为JobStore
选择一个DriverDelegate

DriverDelegate负责做指定数据库的备ADO.NET工作。StdADO.NETDelegate是一个用到vanilla”
ADO.NET代码(以及SQL语句)来成功工作的代办。如果数据库没有任何指定的代理,那么即使试用这个代理。只有当用StdADO.NETDelegate发生问题常常,我们才见面利用数据库特定的代理(这看起很乐观。其他的代理可以于Quartz.Impl.AdoJobStor命名空间找到。)。其他的代办包括PostgreSQLDelegate
( 专也PostgreSQL
7.x)。

若果选择好了代理,就用她的名设置于AdoJobStore。

配置AdoJobStore使用DriverDelegate

quartz.threadPool.type
= Quartz.Simpl.SimpleThreadPool,
Quartz

连下,需要也JobStore指定所下的数据库表前缀(前面议论了)。

配置AdoJobStore的数据库表前缀

quartz.jobStore.tablePrefix
= QRTZ

接下来要设置JobStore所使用的数据源。必须以Quartz属性中定义已命名的数据源,比如,我们指定Quartz使用名也”default”的数据源(在布局文件之旁地方定义)。

配置
AdoJobStore行使数据持续的名字

properties[“quartz.jobStore.dataSource”]
= “default”

   最后,需要配置数据源的用的Ado.net数据提供者和数据库连接串,数据库连接串是正经的Ado.net
数据库连接的连续串。数据库提供者是关系数据库同Quartz.net之间维持小耦合的数据库的连天提供者。

配置AdoJobStore采取数据持续的数据库连接串和数据库提供者

quartz.dataSource.default.connectionString
= Server=(local);Database=quartz;Trusted_Connection=True;

quartz.dataSource.default.provider=
SqlServer-11

   时Quartz.net支持之以下数据库的数量提供者:

  • SqlServer-11 –
    SQL Server driver for .NET Framework 1.1
  • SqlServer-20 –
    SQL Server driver for .NET Framework 2.0
  • OracleClient-20 –
    Microsoft’s Oracle Driver (comes bundled with .NET Framework)

  • OracleODP-20 –
    Oracle’s Oracle Driver

  • MySql-10 –
    MySQL Connector/.NET v. 1.0.7
  • MySql-109 –
    MySQL Connector/.NET v. 1.0.9
  • MySql-50 –
    MySQL Connector/.NET v. 5.0 (.NET 2.0)
  • MySql-51 –
    MySQL Connector/:NET v. 5.1 (.NET 2.0)
  • SQLite1044 –
    SQLite ADO.NET 2.0 Provider v. 1.0.44 (.NET 2.0)

如若Scheduler非常忙碌(比如,执行的职责数多与线程池的数据一样,那么你得正确地配备DataSource的连接数量也线程池数量。为了指示AdoJobStore所有的JobDataMaps中的价值都是字符串,并且能因“名字-值”对的办法囤而无是坐复杂对象的序列化形式储存在BLOB字段遭遇,应装 quartz.jobStore.useProperties配置参数的值也”true”(这是缺少省的章程)。这样做,从遥远来拘禁甚安全,这样避免了针对存储于BLOB中之非字符串的序列化对象的类型转换问题。

相关文章