最近在公司寫一些job,公司使用的是spring boot提供的註解形式實現的。
這樣在自測的時候很麻煩,而且測試提測的時候需要修改cron表示式->提交git->jenkins打包重啟
查閱資料後決定選用任務排程平台,有很多優秀的任務排程平台,選擇xxl-job是因為文件清晰、使用簡單、基於遠端rpc呼叫、官方提供spring boot例子。
docker pull xuxueli/xxl-job-admin:2.0.2
然後執行docker映象 注意修改引數
注意一些引數如郵箱可以省略
這裡配置使用官網示例中的spring boot配置
@configuration
public class xxljobconfig ")
private string adminaddresses;
@value("$")
private string ip;
@value("$")
private int port;
@value("$")
private string accesstoken;
@value("$")
private string logpath;
@value("$")
private int logretentiondays;
@bean(initmethod = "start", destroymethod = "destroy")
public xxljobspringexecutor xxljobexecutor()
}
官網給出的執行器配置說明
xxl.job.admin.addresses=
xxl.job.executor.ip=
### 執行器埠號 [選填]:小於等於0則自動獲取;預設埠為9999,單機部署多個執行器時,注意要配置不同執行器埠;
xxl.job.executor.port=9999
### 執行器通訊token [選填]:非空時啟用;
xxl.job.accesstoken=
### 執行器執行日誌檔案儲存磁碟路徑 [選填] :需要對該路徑擁有讀寫許可權;為空則使用預設路徑;
### 執行器日誌儲存天數 [選填] :值大於3時生效,啟用執行器log檔案定期清理功能,否則不生效;
xxl.job.executor.logretentiondays=-1
官方給出了不少執行器,但是要在原有專案上改造需要自己寫執行器,當然可以使用乙個任務寫乙個執行器,這樣執行器就會很多,很難以維護。所以這裡採用反射的方式
首先是全類名執行器使用反射的方式
@component
@jobhandler(value = "beanbyclasshandler")
public class beanbyclasshandler extends ijobhandler
string split = param.split(",");
if (split == null || split.length < 2)
class taskbeanclass = null;
try catch (exception e)
method method = null;
try catch (exception e)
if (o == null)
try catch (exception e)
return new returnt<>(returnt.success_code, "執行成功");}}
這樣全類名很長所以可以使用spring管理beanname獲得例項進行反射
@component
@jobhandler(value = "beanbynamehandler")
public class beanbynamehandler extends ijobhandler
string split = param.split(",");
if (split == null || split.length < 2)
if(o == null)
method method;
try catch (exception e)
try catch (exception e)
return new returnt<>(returnt.success_code,"呼叫job成功");}}
在web介面新建任務 引數為 全類名,方法名即可。如下圖所示
當然也可以執行shell指令碼
xxl-job只支援mysql資料庫,公司使用的oracle 所以docker需要執行乙個mysql資料庫
xxl-job截至2.0.2版本沒有提供多使用者及許可權管理
好訊息xxl-job在最新的 6.27 版本 v2.1.2 release notes[2019-12-12]中支援了方法級別的handler註解,不需要再寫反射啦!
XXL Job執行器部署
xxl job執行器部署 配置執行器元件 configuration public class xxljobconfig private string adminaddresses value private string ip value private int port value privat...
xxl job高可用部署
xxl job高可用部署 xxl job作為分布式任務排程中心,怎麼實現高可用呢,如下圖所示 當我們部署一套 xxl job 的時,排程中心 可用分布式部署,首先我們的排程中心最好部署兩台,排程中心會指向同乙個 mysql 例項,這樣排程中心一定程度上可以保證它的 ha 1 對於頁面的請求操作是根據...
docker部署 docker環境部署mysql
蘇軾 這裡我拉取了tag為5.7的映象 docker pull mysql 5.7因為需要自定義mysql的配置,所以需要乙個配置目錄 因為需要將mysql生成的資料掛載到本地,所以需要乙個資料目錄 建立mysql 資料目錄mkdir p root mysql data 建立配置檔案 touch r...