quartz外掛程式可以使grails應用程式按照指定的時間間隔或cron表示式來執行排程任務。grails系統通過spring配置使用quartz enterprise job scheduler 實現,但是編碼時按照規約可以很容易的實現。
grails-quartz 0.4.1是當前穩定版本。grails-quartz 0.4.2是最新正在開發的版本。(已經發布了)
1 外掛程式安裝
在應用資料夾路徑下鍵入以下命令
grails install-plugin quartz
如果以上命令由於某種原因不行,試一下下面這個
grails install-plugin
2 用法
排程任務(scheduling jobs)
class myjob
def group = "mygroup"
def execute()
}上述例子會等待1分鐘後每秒呼叫execute方法一次。'repeatinterval' 和'startdelay'屬性的單位是毫秒,值必須是int或long。如果這兩個屬性不指定,則使用預設值(repeatinterval為1分鐘,startdelay為30秒)
jobs預設情況下在test環境不執行。
排程cron任務(scheduling a cron job)
可以使用cron表示式排程任務。
class myjob
def group = "mygroup"
def execute()
}組合觸發器任務
可以使用組合觸發器排程任務。
class myjob def execute()上面這個例子中,scheduler(排程器)啟動10秒後,job會每隔30秒執行一次,一共執行11次(******trigger);在15點時每6秒執行一次(15:00:00, 15:00:06, 15:00:12, … — 這個由'crontrigger'配置的),自定義的觸發器觸發時執行。}
三種觸發器可以支援的引數如下
cron
:
custom
:
動態任務排程(dynamic jobs scheduling)
從0.4.1版本開始,可以使用動態排程任務。
可以使用以下方法:
每個方法都帶有乙個可選的『params』引數。可以用它傳遞資料。
class myjobenvironments }}…}// 在controller (或 service, 或其他地方):
myjob.triggernow([foo:"it works!"
])依賴注入和jobs(dependency injection and jobs)
jobs被配置為按名稱自動繫結(auto-wiring by name),屬性可以注入到jobs裡。為獲取data source可以宣告
def datasource
或者乙個service類
def myservice
使用jobexecutioncontext(using jobexecutioncontext)從0.3.2開始,你可以定義在job中這樣定義execute方法def execute(context){},這由quartz'sjobexecutioncontext提供。
如通過
context.getmergedjobdatamap()
提供一些引數給job一樣,你可以從context中獲取某些資訊(觸發器名稱,上次執行時間,下次執行時間等)。如果你的job是有狀態的(看下面的併發一節),jobexecutioncontext中的job資料在每次執行job時也會持久化。
配置外掛程式(configuring the plugin)
config.groovy
相同
。在命令列鍵入
'grails install-quartz-config',可以獲得乙個初始的
quartz配置檔案。檔案內容大致如下:quartz
目前支援的選項:
還可以建立
quartz排程器提供不同的選項
(參考quartz configuration reference).日誌(logging)
hibernate會話和任務(hibernate sessions and jobs)
預設配置每次job執行時繫結乙個hibernate會話。當你要open session或者domain類持久化操作時這是必須的。
如果你不使用,可以使用 'sessionrequired' 屬性過載這個行為。
def sessionrequired = false
配置併發執行(configuring concurrent execution)
預設jobs可以併發執行,因此即使前乙個同樣的任務正在執行,乙個新的任務也可以建立並執行。如果想過載這種行為,可以使用'concurrent' 屬性
def concurrent = false
Grails Quartz外掛程式 定時排程任務
quartz外掛程式可以使grails應用程式按照指定的時間間隔或cron表示式來執行排程任務。grails系統通過spring配置使用quartz enterprise job scheduler 實現,但是編碼時按照規約可以很容易的實現。grails quartz 0.4.1是當前穩定版本。gr...
淡定,淡定,淡定
我的思緒過分調皮,有時候有個靈感覺得挺好還沒來得及記下來就又去想別的事情了,真不知道自己是怎麼回事。有時候糾結一件事情,是因為不知道如何選擇下面的行動,通常我看到乙個問題後都會冒出a b c三種選擇,如果其中乙個優勢特別顯著還好要是勢力相當就玩完了,我就會很矛盾很糾結,通常是先往東在往西或許還要來回...
Jmeter使用GUI壓測所用到的外掛程式 定時器等
2 當要壓測的介面需要傳入上一介面返回的資料時,壓測只壓測乙個介面,怎麼辦?我是將他們放到不同的執行緒組中,這樣壓測只壓測其中乙個執行緒組的就好了。當然還有其他的辦法,只是我個人覺得這樣最方便,還可以加多個執行緒組,其他執行緒組都可以單獨壓測,也可以共用第乙個執行緒組的返回資料 如上圖 我將toke...