Java?Elastic-Job分布式定時(shí)任務(wù)使用方法介紹
1 事件追蹤
Elastic-Job-Lite在配置中提供了JobEventConfiguration,支持?jǐn)?shù)據(jù)庫(kù)方式配置,會(huì)在數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG兩張表以及若干索引,來(lái)記錄作業(yè)的相關(guān)信息。
1.1 修改Elastic-Job配置類
在ElasticJobConfig中修改:
@Autowired private DataSource dataSource; /** * 任務(wù)啟動(dòng) * * @return */ @Bean(initMethod = "init") public SpringJobScheduler initSimpleElasticJob() { SimpleJob job1 = fileBackupJobDb; // // 定義Lite作業(yè)根配置 JobEventConfiguration jobEventConfig = new JobEventRdbConfiguration(dataSource);// 增加任務(wù)事件追蹤配置 SpringJobScheduler jobScheduler = new SpringJobScheduler(job1,registryCenter, createJobConfiguration(job1.getClass(),"0/10 * * * * ?",4,"0=text,1=image,2=radio,3=vedio"), jobEventConfig); return jobScheduler; }
1.2 啟動(dòng)項(xiàng)目
啟動(dòng)后會(huì)發(fā)現(xiàn)在elastic_job_demo數(shù)據(jù)庫(kù)中新增以下兩個(gè)表。
job_execution_log:
job_status_trace_log:
JOB_EXECUTION_LOG記錄每次作業(yè)的執(zhí)行歷史。分為兩個(gè)步驟:
1. 作業(yè)開(kāi)始執(zhí)行時(shí)向數(shù)據(jù)庫(kù)插入數(shù)據(jù),除failure_cause和complete_time外的其他字段均不為空。
2. 作業(yè)完成執(zhí)行時(shí)向數(shù)據(jù)庫(kù)更新數(shù)據(jù),更新is_success, complete_time和failure_cause(如果作業(yè)執(zhí)行失敗)。
JOB_STATUS_TRACE_LOG記錄作業(yè)狀態(tài)變更痕跡表??赏ㄟ^(guò)每次作業(yè)運(yùn)行的task_id查詢作業(yè)狀態(tài)變化的生命周期和運(yùn)行軌跡。
2 運(yùn)維
elastic-job中提供了一個(gè)elastic-job-lite-console控制臺(tái)
設(shè)計(jì)理念
- 本控制臺(tái)和Elastic Job并無(wú)直接關(guān)系,是通過(guò)讀取Elastic Job的注冊(cè)中心數(shù)據(jù)展現(xiàn)作業(yè)狀態(tài),或更新注冊(cè)中心數(shù)據(jù)修改全局配置。
- 控制臺(tái)只能控制作業(yè)本身是否運(yùn)行,但不能控制作業(yè)進(jìn)程的啟停,因?yàn)榭刂婆_(tái)和作業(yè)本身服務(wù)器是完全分布式的,控制臺(tái)并不能控制作業(yè)服務(wù)器。
主要功能
- 查看作業(yè)以及服務(wù)器狀態(tài)
- 快捷的修改以及刪除作業(yè)設(shè)置
- 啟用和禁用作業(yè)
- 跨注冊(cè)中心查看作業(yè)
- 查看作業(yè)運(yùn)行軌跡和運(yùn)行狀態(tài)
不支持項(xiàng)
1. 添加作業(yè)。因?yàn)樽鳂I(yè)都是在首次運(yùn)行時(shí)自動(dòng)添加,使用控制臺(tái)添加作業(yè)并無(wú)必要。直接在作業(yè)服務(wù)器啟動(dòng)包含Elastic Job的作業(yè)進(jìn)程即可
具體搭建步驟如下:
2.1 搭建
下載地址:傳送門
解壓縮 elastic-job-lite-console-${version}.tar.gz 。
進(jìn)入 bin目錄 并執(zhí)行:
bin\start.sh
打開(kāi)瀏覽器訪問(wèn) http://localhost:8899/ 即可訪問(wèn)控制臺(tái)。8899為默認(rèn)端口號(hào),可通過(guò)啟動(dòng)腳本輸入-p自定義端口號(hào)。
elastic-job-lite-console-${version}.tar.gz 也可通過(guò) elastic-job 源碼用 mvn install編譯獲取。
輸入用戶名 root 密碼 root 即可打開(kāi)主界面如下圖
提供兩種賬戶,管理員及訪客,管理員擁有全部操作權(quán)限,訪客僅擁有察看權(quán)限。默認(rèn)管理員用戶名和密碼是root/root,訪客用戶名和密碼是guest/guest,可通過(guò)conf\auth.properties修改管理員及訪客用戶名及密碼。
2.2 配置及使用
1 配置注冊(cè)中心地址
先啟動(dòng)zookeeper 然后在注冊(cè)中心配置界面點(diǎn)添加
點(diǎn)擊提交后,然后點(diǎn)連接(zookeeper必須處于啟動(dòng)狀態(tài))
連接成功后,在作業(yè)維度下可以顯示該命名空間下作業(yè)名稱、分片數(shù)量及該作業(yè)的cron表達(dá)式等信息在服務(wù)器維度可以查看服務(wù)器ip、當(dāng)前運(yùn)行的實(shí)例數(shù)、作業(yè)總數(shù)等信息。
2 配置事件追蹤數(shù)據(jù)源
在事件追蹤數(shù)據(jù)源配置頁(yè)面點(diǎn)添加按鈕,輸入相關(guān)信息
提交后點(diǎn)擊連接即可在作業(yè)歷史下查看作業(yè)歷史記錄
3 dump命令
使用Elastic-Job-Lite過(guò)程中可能會(huì)碰到一些問(wèn)題,導(dǎo)致作業(yè)運(yùn)行不穩(wěn)定。由于無(wú)法在生產(chǎn)環(huán)境調(diào)試,通過(guò)dump命令可以把作業(yè)內(nèi)部相關(guān)信息dump出來(lái),方便開(kāi)發(fā)者debug分析。
(1)開(kāi)啟dump監(jiān)控端口,并運(yùn)行程序
修改中ElasticJobConfifig中的createJobConfifiguration方法里JobRootConfifiguration的配置,開(kāi)啟dump監(jiān)控端口:
JobRootConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig) .monitorPort(9888)//設(shè)置dump端口 .build();
(2)windows中安裝netcat(若操作系統(tǒng)中已經(jīng)有nc命令,此步驟可略過(guò))
tools文件夾內(nèi)包含netcat-win32-1.12.zip,解壓即可。
(3)執(zhí)行dump命令
打開(kāi)命令行工具,進(jìn)入netcat-win32-1.12.zip的解壓目錄,執(zhí)行以下命令:
echo dump| nc 127.0.0.1 9888 > job_debug_dump.txt
會(huì)在當(dāng)前目錄生成job_debug_dump.txt文件,打開(kāi)job_debug_dump.txt后看到:
/com.example.demo.job.FileBackupJobDb/sharding |
/com.example.demo.job.FileBackupJobDb/sharding/3 |
/com.example.demo.job.FileBackupJobDb/sharding/3/instance | ip18@-@19084
/com.example.demo.job.FileBackupJobDb/sharding/2 |
/com.example.demo.job.FileBackupJobDb/sharding/2/instance | ip18@-@19084
/com.example.demo.job.FileBackupJobDb/sharding/1 |
/com.example.demo.job.FileBackupJobDb/sharding/1/instance | ip18@-@19084
/com.example.demo.job.FileBackupJobDb/sharding/0 |
/com.example.demo.job.FileBackupJobDb/sharding/0/instance | ip18@-@19084
/com.example.demo.job.FileBackupJobDb/servers |
/com.example.demo.job.FileBackupJobDb/servers/ip18 |
/com.example.demo.job.FileBackupJobDb/servers/ip2 |
/com.example.demo.job.FileBackupJobDb/leader |
/com.example.demo.job.FileBackupJobDb/leader/sharding |
/com.example.demo.job.FileBackupJobDb/leader/election |
/com.example.demo.job.FileBackupJobDb/leader/election/latch |
/com.example.demo.job.FileBackupJobDb/leader/election/instance | ip18@-@19084
/com.example.demo.job.FileBackupJobDb/instances |
/com.example.demo.job.FileBackupJobDb/instances/ip18@-@19084 |
/com.example.demo.job.FileBackupJobDb/config | {"jobName":"com.example.demo.job.FileBackupJobDb","jobClass":"com.example.demo.job.FileBackupJobDb","jobType":"SIMPLE","cron":"0/10 * * * * ?","shardingTotalCount":4,"shardingItemParameters":"0\u003dtext,1\u003dimage,2\u003dradio,3\u003dvedio","jobParameter":"","failover":false,"misfire":true,"description":"","jobProperties":{"job_exception_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler","executor_service_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler"},"monitorExecution":true,"maxTimeDiffSeconds":-1,"monitorPort":9888,"jobShardingStrategyClass":"","reconcileIntervalMinutes":10,"disabled":false,"overwrite":true}
里面展示的其實(shí)就是FileBackupJob任務(wù)在Zookeeper中的信息。
到此這篇關(guān)于Java Elastic-Job分布式定時(shí)任務(wù)使用方法介紹的文章就介紹到這了,更多相關(guān)Java Elastic-Job內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)現(xiàn)并發(fā)執(zhí)行定時(shí)任務(wù)并手動(dòng)控制開(kāi)始結(jié)束
- Java定時(shí)任務(wù)取消的示例代碼
- Java定時(shí)任務(wù)Timer、TimerTask與ScheduledThreadPoolExecutor詳解
- Java?@Scheduled定時(shí)任務(wù)不執(zhí)行解決辦法
- Java實(shí)現(xiàn)定時(shí)任務(wù)的方法總結(jié)
- java實(shí)現(xiàn)周期性執(zhí)行(定時(shí)任務(wù))
- java8中定時(shí)任務(wù)最佳實(shí)現(xiàn)方式(實(shí)現(xiàn)原理)
相關(guān)文章
MybatisX 快速開(kāi)發(fā)插件過(guò)程詳解
MybatisX 是一款基于 IDEA 的快速開(kāi)發(fā)插件,方便在使用mybatis以及mybatis-plus開(kāi)始時(shí)簡(jiǎn)化繁瑣的重復(fù)操作,提高開(kāi)發(fā)速率。這篇文章主要介紹了MybatisX 快速開(kāi)發(fā)插件,需要的朋友可以參考下2021-10-10java使用xfire搭建webservice服務(wù)的過(guò)程詳解
這篇文章主要介紹了java使用xfire搭建webservice服務(wù)的過(guò)程。使用xfire搭建webService的服務(wù),可以在瀏覽器訪問(wèn)。對(duì)此感興趣的可以了解一下2020-07-07JAVA TIMER簡(jiǎn)單用法學(xué)習(xí)
Timer類是用來(lái)執(zhí)行任務(wù)的類,它接受一個(gè)TimerTask做參數(shù)2013-07-07java:java.lang.ExceptionInInitializerError報(bào)錯(cuò)解決過(guò)程
這篇文章主要給大家介紹了關(guān)于java:java.lang.ExceptionInInitializerError報(bào)錯(cuò)的解決過(guò)程,java.lang.ExceptionInInitializerError 是一個(gè)異常,表示在初始化一個(gè)類的靜態(tài)變量或靜態(tài)塊時(shí)發(fā)生了錯(cuò)誤,需要的朋友可以參考下2023-10-10SpringBoot 項(xiàng)目如何在tomcat容器中運(yùn)行的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot 項(xiàng)目如何在tomcat容器中運(yùn)行的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09基于mybatis?plus實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)添加、刪除、切換,自定義數(shù)據(jù)源的示例代碼
這篇文章主要介紹了基于mybatis?plus實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)添加、刪除、切換,自定義數(shù)據(jù)源,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03java WebSocket客戶端斷線重連的實(shí)現(xiàn)方法
在工作中是否會(huì)遇到實(shí)用websocket客戶端連接服務(wù)端的時(shí)候,網(wǎng)絡(luò)波動(dòng),服務(wù)端斷連的情況,本文可以直接使用的斷線重連,感興趣的可以了解一下2021-10-10