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