Quartz.NET 2.x 文件翻譯 - Lesson 9:JobStores
Quartz.NET 2.x 文件翻譯 - Lesson 9:JobStores 檢視官網英文原文
JobStores負責跟蹤所有的scheduler排程“工作資料”,jobs, triggers, calendars, etc等。選擇合適的IJobStore實現是我們使用Quartz scheduler排程很重要的一步,其實只要我們熟悉這些實現,使用起來還是很方便的,只需要我們定義好哪個JobStore用於scheduler排程使用在SchedulerFactory的生產排程例項中。
我們不要在程式碼中直接使用JobStore,但是貌似很多人出於不同的原因這樣用了。JobStore是在Quartz中進行配置使用的,所以我們需要做的是告訴Quartz使用那個JobStore,最後在我們的程式碼中是通過使用Scheduler排程來操作的。
RAMJobStore
RAMJobStore是最簡單的JobStore,也是最高效的。RAMJobStore的命名來自於它的使用方式:它保持它的所有資料在RAM中,這也是為什麼它效能比較高的原因,配置也是很簡單便捷。缺點是當應用程式結束,所有排程資訊丟失,這個時候RAMJobStore就不能執行兌現“non-volatility”在job和Trigger上,再次啟動應用程式還需要從新配置等。對於某些應用程式來說可能是可以接受的,但是對於其他的則是不可以接受的。Configuring Quartz to use RAMJobStore
quartz.jobStore.type = Quartz.Simpl.RAMJobStore, Quartz使用RAMJobStore的時候我們不需要刻意做什麼,Quartz.NET的預設配置是使用RAMJobStore作為jobstore的實現。
ADO.NET Job Store (AdoJobStore)
AdoJobStore的命名也是基於其資料儲存方式,AdoJobStore通過 ADO.NET 將資料儲存在資料庫中。相對於RAMJobStore來說這就稍微有點複雜了,也不如前者效能高,不過效能損失也不是很厲害,如果我們建立好資料庫的主鍵索引,那麼效能也是可以的。使用AdoJobStore,我們首先要建立一個資料庫給Quartz.NET使用,我們可以在我們下載的Quartz.NET目錄下的database資料夾找到建立表的sql語句,如果沒有你要用的資料庫型別的建立指令碼,可以參考其他型別的資料庫指令碼自己編寫一個就可以了,預設的指令碼建立都是用“QRTZ_”開頭的,我們也可以根據我們的需要來修改,只需要我們告訴AdoJobStore新的字首是什麼就ok了,使用不同的字首可以用於我們不同的業務,多個排程的時候,我們也可以在一個資料庫操作進行。
目前quartz.net內唯一可用的jobstore是JobStoreTX,這個不同於java版本的quartz,java版本的可以選擇是喲那個了J2EE容器管理事務的JobStoreCMT。
最後一項設定就是讓AdoJobStore能獲得資料庫連線併成功連線到資料庫,在我們的Quartz.NET屬性中設定Data資料來源,Data資料來源資訊包括連線字串和ADO.NET委託資訊。
Configuring Quartz to use JobStoreTx
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz接下來,我們需要選擇一個IDriverDelegate來給JobStore使用,DriverDelegate用於我們資料庫的ADO.net操作。StdAdoDelegate是一個使用“vanilla” ADO.NET 程式碼來工作的的委託,如果沒有你使用資料庫的委託,嘗試使用此委託來解決特定資料庫問題。其他的委託可以檢視Quartz.Impl.AdoJobStore名稱空間下及其子空間下的。
注意:如果我們有很多的Trigger觸發器並使用預設的StdAdoDelegate(效能較差)來執行操作,Quartz.NET就會提示警告資訊,每一個資料庫委託都有特定的SQL語法來限定返回結果的長度(SQLServerDelegate 使用 TOP n, PostgreSQLDelegate LIMIT n, OracleDelegate ROWCOUNT() <= n etc.)。
一旦我們選擇了我們的資料庫委託,我們需要給AdoJobStore設定class名稱以便我們後續的使用。
Configuring AdoJobStore to use a DriverDelegate
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz接下來我們需要設定資料庫表字首資訊給JobStore使用
Configuring AdoJobStore with the Table Prefix
quartz.jobStore.tablePrefix = QRTZ_最後,我們需要設定JobStore的Data資料來源資訊,名稱也必須是在Quartz屬性定義好的,在這種情況下,我們可以使用資料來源名稱“myDS”。
Configuring AdoJobStore with the name of the data source to use
quartz.jobStore.dataSource = myDS我們還需要配置的是data資料來源的連結字串和database驅動,連線字串是明確驅動的ADO.NET連線,資料庫提供程式是資料庫驅動的抽象,用於在Quartz和database之間建立鬆耦合的連線。
Setting Data Source’s Connection String And Database Provider
quartz.dataSource.myDS.connectionString = Server=localhost;Database=quartz;Uid=quartznet;Pwd=quartznet quartz.dataSource.myDS.provider = MySql-50quartz對以下資料庫提供程式已經做了支援:
- SqlServer-20 - SQL Server driver for .NET Framework 2.0
- OracleODP-20 - Oracle’s Oracle Driver
- OracleODPManaged-1123-40 Oracle’s managed driver for Oracle 11
- OracleODPManaged-1211-40 Oracle’s managed driver for Oracle 12
- MySql-50 - MySQL Connector/.NET v. 5.0 (.NET 2.0)
- MySql-51 - MySQL Connector/:NET v. 5.1 (.NET 2.0)
- MySql-65 - MySQL Connector/:NET v. 6.5 (.NET 2.0)
- SQLite-10 - SQLite ADO.NET 2.0 Provider v. 1.0.56 (.NET 2.0)
- Firebird-201 - Firebird ADO.NET 2.0 Provider v. 2.0.1 (.NET 2.0)
- Firebird-210 - Firebird ADO.NET 2.0 Provider v. 2.1.0 (.NET 2.0)
- Npgsql-20 - PostgreSQL Npgsql
如果我們的Scheduler執行很繁忙,也就是總在執行和執行緒池資料類似的job任務),那麼我們就需要設定資料來源連線數大概線上程池數量範圍,通常是在ADO.NET連線字串中設定。
“quartz.jobStore.useProperties”配置引數可以設定為“True”(預設是False),設定後在AdoJobStore的JobDataMaps中的數值將是字串型別,這樣就可以儲存name-value這種鍵值對資料,就不在儲存物件系列化這種複雜的資料格式,這樣也較為安全,避免了不同版本序列化的問題。
配置adojobstore使用字串作為JobDataMap值(推薦)
quartz.jobStore.useProperties = true
由龐順龍最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- Quartz.NET 2.x 文件翻譯 - Lesson 8:SchedulerListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 1:使用Quartzquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 2:Jobs 和 Triggersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 7:TriggerListeners 和JobListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 5:SimpleTrigger觸發模式quartz模式
- Quartz.NET 2.x 文件翻譯 - Lesson 12:Quartz的其他各種特性quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 6:CronTrigger觸發模式quartz模式
- Quartz.NET 2.x 文件翻譯 - Lesson 3:Jobs 和 Triggers深入瞭解quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 10:Configuration, Resource Usage 和 SchedulerFactoryquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 4:更多Triggers觸發器說明quartz觸發器
- Quartz.NET 2.x 文件翻譯-文章目錄quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 11:Advanced (Enterprise) Features 高階功能quartz
- 文件翻譯器怎麼用?如何翻譯Word文件?
- JavaPoet 文件翻譯Java
- 有ppt文件翻譯軟體嗎?如何翻譯整篇ppt文件
- MPAndroidChart文件翻譯Android
- Moya官方文件翻譯
- Samza文件翻譯 : Backgroud
- 本人翻譯的文件
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- 怎麼翻譯整篇Excel文件?Excel文件翻譯一招搞定Excel
- 怎麼把Excel文件翻譯成中文?Excel文件翻譯方法介紹Excel
- docker官方文件翻譯3Docker
- SnapKit 中文文件翻譯APK
- docker官方文件翻譯4Docker
- rabbitmq 官方文件翻譯-2MQ
- docker官方文件翻譯5Docker
- docker官方文件翻譯2Docker
- docker官方文件翻譯1Docker
- Core Foundation 官方文件翻譯
- Samza文件翻譯 : Architecture
- Akka Stream文件翻譯:Motivation
- Guava文件翻譯之 ServiceGuava
- Guava文件翻譯之ListenableFutureGuava
- expat介紹文件翻譯
- TailWind文件翻譯說明以及每日翻譯進度AI
- HTTPie 官方文件中文翻譯版HTTP
- Draft 文件翻譯 - API - ContentStateRaftAPI