bboss quartz定時任務使用案例介紹
本文demo gradle工程源碼地址:
1.導入bboss quartz
maven坐標
<dependency>
<groupId>com.bbossgroups</groupId>
<artifactId>bboss-schedule</artifactId>
<version>5.0.3.5</version>
</dependency>
gradle坐標
compile "com.bbossgroups:bboss-schedule:5.0.3.5"
bboss 整合quartz版本為quartz 2.3.0。
2.定義作業處理任務
package org.frameworkset.quartz.job;
/**
* 定時任務實現類
*/
public class DemoJob {
/**
* 定時任務需要依賴的參數
*/
private String jobParam ;
private String jobParam1;
/**
* 定時任務方法
*/
public void jobmethod{
System.out.println("execute job method:jobParam="+jobParam+",jobParam1="+jobParam);
}
}
定時任務配置
在bboss quartz任務配置文件org/frameworkset/task/quarts-task.xml中添加定時任務:
<!--
任務調度
-->
<properties>
<!--<config file="elastic.properties"/>-->
<!--quartz引擎配置參數,參考quartz官方配置文檔
http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/
第一部分
-->
<property name="quartz.config">
<map>
<property name="org.quartz.scheduler.instanceName" value="DefaultQuartzScheduler111" />
<property name="org.quartz.scheduler.rmi.export" value="false" />
<property name="org.quartz.scheduler.rmi.proxy" value="false" />
<property name="org.quartz.scheduler.wrapJobExecutionInUserTransaction" value="false" />
<property name="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool" />
<property name="org.quartz.threadPool.threadCount" value="10" />
<property name="org.quartz.threadPool.threadPriority" value="5" />
<property name="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread" value="true" />
<property name="org.quartz.jobStore.misfireThreshold" value="6000" />
<property name="org.quartz.jobStore.class" value="org.quartz.simpl.RAMJobStore" />
</map>
<!-- for cluster -->
</property>
<!--第二部分-->
<property name="taskconfig" enable="true">
<list>
<property name="定時任務執行器" taskid="default"
class="org.frameworkset.task.DefaultScheduleService" used="true">
<!--
可執行的任務項
屬性說明:
name:任務項名稱
id:任務項標識
action:具體的任務執行處理程序,實現org.frameworkset.task.Execute介面
cron_time:cron格式的時間表達式,用來管理任務執行的生命周期,相關的規則請參照日期管理控制項quartz的說明文檔
基本格式 : [參數間必須使用空格隔開]
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
shouldRecover:集群環境下屬性必須設置為 true,當Quartz服務被中止後,再次啟動或集群中其他機器接手任務時會嘗試恢復執行之前未完成的所有任務。
used 是否使用
true 載入,預設值
false 不載入
子元素說明:
parameter:設置任務執行的參數,name標識參數名稱,value指定參數的值
-->
<list>
<!--配置定時任務-->
<property name="quartzjobdemo" jobid="quartzjobdemo"
bean-name="quartzjobdemo"
method="jobmethod"
cronb_time="0/1 * * * * ?" used="true"
shouldRecover="false"
/>
</list>
</property>
</list>
</property>
<property name="quartzjobdemo" class="org.frameworkset.quartz.job.DemoJob"
f:jobParam="asdff"
f:jobParam1="dddd"
/>
</properties>
配置說明
配置文件中包含兩部分:
第一部分quartz引擎參數配置,這裡不做具體介紹,可以參考文檔:
第二部分作業配置,可以定義多個作業,這裡配置了quartzjobdemo一個作業:
<property name="quartzjobdemo" jobid="quartzjobdemo"
bean-name="quartzjobdemo"
method="jobmethod"
cronb_time="0/1 * * * * ?" used="true"
shouldRecover="false"
/>
name和jobid是作業標識,有含義和保證唯一性就行,bean-name指定了作業任務實現類的bboss ioc組件名稱,methd指定了作業的方法名稱,cronb_time指定了作業cron觸發時間點,這裡是每秒執行一次作業方法:
0/1 * * * * ?
作業組件定義部分,bboss ioc配置參考文檔:
<property name="quartzjobdemo" class="org.frameworkset.quartz.job.DemoJob"
f:jobParam="asdff"
f:jobParam1="dddd"
/>
3.調試作業任務
調試作業任務,在工程中新建一個帶main方法的測試類,然後再idea或者eclipse中run和debug即可:
import org.frameworkset.task.TaskService;
/**
* 調試作業任務
*/
public class TestTask {
public static void main(String[] args){
/**
* 啟動quartz作業引擎
*/
TaskService.getTaskService.startService;
}
}
4.發布獨立運行的版本
編寫一個啟動類:
org.frameworkset.quartz.job.Main
package org.frameworkset.quartz.job;
import org.frameworkset.task.TaskService;
/**
* bboss微服務主程序
*/
public class Main {
public static void main(String[] args){
//啟動定時任務quartz引擎
TaskService.getTaskService.startService;
}
}
配置入口類-runfiles/config.properties:
#工具主程序
mainclass=org.frameworkset.quartz.job.Main
基於gradle發布作業版本
在命令行運行指令:
gradle releaseVersion
也可以在idea中發布版本:
版本發布成功後,在工程的build目錄下會生成一個可運行的包,啟動作業:
linux :執行startup.sh
windowd:執行startup.bat
以windows為例:
運行結果:
一個更具體的bboss quartz應用項目:
elasticsearch歷史數據清理作業
※httpclient連接池相關參數的坑
※lambda表達式的學習
※InnoDB關鍵特性之自適應hash索引
※python開發部署時新增資料庫中表的方法
※Android 基於 Speex 的高度封裝語音庫,0 耦合,沒三方jar包
TAG:達人科技 |
※Elasticsearch SQL案例介紹
※callback Promise async await 非同步回調 案例
※TensorFlow Lite在Kika Keyboard中的應用案例分享
※如何為Kubernetes準備案例
※校園辦公建築設計:印度International Management Institute研究所/案例
※SpringBoot開發案例Nacos配置管理中心
※Stella McCartney、Rothy』s等可持續時尚品牌案例分析
※校園公共建築設計:匈牙利Szamalk Educational Center教育中心/案例
※一個UX案例研究—Foursquare
※一個UX案例研究——Foursquare
※【案例】Ladoration 樂慕
※高層綜合辦公樓建築設計:智利Mutual de Seguridad醫院與 Bicentenario門診中心/案例
※小型公共建築設計:紐約Kupferberg Holocaust 檔案館/案例
※塔羅案例|跳槽OR不跳?This is a question.
※「感受聲音的魅力」 Sonance Legacy Records餐廳案例
※創意中心建築規劃設計:??拉脫維亞Centre of Creative Services/案例
※多層辦公樓建築設計:印度Wolkem Office Building/案例
※綜合辦公樓+山地建築設計:海法大學Haifa University Student Center學生中心/案例
※小型公共建築設計:瑞士Viamala Rastst?tte服務站/案例
※證券公司 Oracle RAC on HyperFlex 成功案例