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