您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何正確的使用elastic-job,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
docker ps 列出當(dāng)前正在運(yùn)行的容器 docker ps -a 列出全部的容器 docker rm 容器ID 移除容器 docker images 全部鏡像 運(yùn)行zookeeper: docker run --name elasticzookeeper -p 2181:2181 -v /Users/abc/Desktop/WorkSpace/DockerData/elsaticzookeeper/data:/data/ -d zookeeper docker run 運(yùn)行一個容器 —name 給容器起個名字(標(biāo)識,docker不能重復(fù)) -p 宿主端?口:容器?端?口 -v 宿主?目錄:容器??目錄,掛載磁盤卷 -d 后臺運(yùn)行容器 docker exec -it 容器id bash 登錄到容器中
我們可以參考官方的文檔(有中文的),很詳細(xì)有具體的使用,http://elasticjob.io/docs/elastic-job-lite/00-overview/
(摘自官網(wǎng))Elastic-Job是一個分布式調(diào)度解決方案,由兩個相互獨(dú)立的子項(xiàng)目Elastic-Job-Lite和Elastic-Job-Cloud組成。Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù);Job-Cloud采用自研Mesos Framework的解決方案,額外提供資源治理、應(yīng)用分發(fā)以及進(jìn)程隔離等功能(PS:我在這里只說Elastic-Job-Lite,因?yàn)镴ob-Cloud我沒去研究)。 簡單的說Elastic-Job-Lite就是一個分布式定時任務(wù)。
<dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-spring</artifactId> <version>2.1.5</version> </dependency> <!-- https://mvnrepository.com/artifact/com.dangdang/elastic-job-lite-core --> <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core</artifactId> <version>2.1.5</version> </dependency>
public class FirstSimpleJobDemo implements SimpleJob { private static final Logger logger = LoggerFactory.getLogger(FirstSimpleJobDemo.class); @Override public void execute(ShardingContext shardingContext) { int shardingTotalCount = shardingContext.getShardingTotalCount(); int item = shardingContext.getShardingItem(); String shardingParameter = shardingContext.getShardingParameter(); logger.info("shardingTotalCount:{},shardingParameter:{}",shardingTotalCount,shardingParameter); logger.info("----- ThredID:{},當(dāng)前分片項(xiàng):{}",Thread.currentThread().getId(),item); } }
只要實(shí)現(xiàn)SimpleJob類然后實(shí)現(xiàn)execute就可以了,在execute中寫我們的定時任務(wù)處理邏輯。
(摘自官網(wǎng))SimpleJob 意為簡單實(shí)現(xiàn),未經(jīng)任何封裝的類型。需實(shí)現(xiàn)SimpleJob接口。該接口僅提供單一方法用于覆蓋,此方法將定時執(zhí)行。與Quartz原生接口相似,但提供了彈性擴(kuò)縮容和分片等功能。 看下官方的demo
public class MyElasticJob implements SimpleJob { @Override public void execute(ShardingContext context) { switch (context.getShardingItem()) { case 0: // do something by sharding item 0 break; case 1: // do something by sharding item 1 break; case 2: // do something by sharding item 2 break; // case n: ... } } }
使用context.getShardingItem()使用多線程對不同的數(shù)據(jù)做不同的處理。
我們還可以實(shí)現(xiàn)Dataflow類型作業(yè)用來處理流作業(yè),Script類型作業(yè),用來處理腳本作業(yè)。具體可以查看官方文檔。
代碼如下:
<reg:zookeeper id="regCenter" server-lists="localhost:2181" namespace="elsatic-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
其中參數(shù)的意思為:
server-lists 連接Zookeeper服務(wù)器的列表
namespace Zookeeper的命名空間
base-sleep-time-milliseconds 等待重試的間隔時間的初始值
max-sleep-time-milliseconds 等待重試的間隔時間的最大值
maxRetries 最大重試次數(shù)
其具體使用和參數(shù)的單位等請去官網(wǎng)的配置手冊中查看。
<!-- 配置作業(yè)--> <job:simple id="demoSimpleSpringJob" class="org.chen.demo.FirstSimpleJobDemo" registry-center-ref="regCenter" cron="0 0/2 * * * ?" sharding-total-count="2" sharding-item-parameters="0=A,1=B" overwrite="true"/>
其中參數(shù)的意思為:
id 作業(yè)名稱
class 作業(yè)實(shí)現(xiàn)類,需實(shí)現(xiàn)ElasticJob接口
registry-center-ref 注冊中心Bean的引用,需引用reg:zookeeper的聲明
sharding-total-count 作業(yè)分片總數(shù)
sharding-item-parameters 分片序列號和參數(shù)用等號分隔,多個鍵值對用逗號分隔 分片序列號從0開始,不可大于或等于作業(yè)分片總數(shù)
overwrite 本地配置是否可覆蓋注冊中心配置,如果可覆蓋,每次啟動作業(yè)都以本地配置為準(zhǔn)
具體使用可以參考官方配置手冊。需要注意,overwrite這個參數(shù)默認(rèn)為false
從github把console的代碼下載下來然后運(yùn)行代碼,然后輸入http://localhost:8899/即可訪問控制臺。8899為默認(rèn)端口號,可通過啟動腳本輸入-p自定義端口號。
進(jìn)入平臺,新建全局配置,填寫注冊中心名稱(就是自己好辨識是哪個項(xiàng)目或者那塊業(yè)務(wù)相關(guān)的),注冊中心地址(zookeeper的地址),命名空間需要和定時任務(wù)項(xiàng)目中配置的一致,加完后點(diǎn)擊連接按鈕,連接上后可進(jìn)行下步操作
進(jìn)入作業(yè)操作->作業(yè)維度 顯示每個定時任務(wù),然后可以操作每個定時任務(wù)
進(jìn)入作業(yè)操作->服務(wù)器維度 顯示服務(wù)器的IP,運(yùn)行任務(wù)的個數(shù)等。
上述內(nèi)容就是如何正確的使用elastic-job,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。