日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用)

發(fā)布時(shí)間:2024/9/20 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ElasticJob 是一個(gè)分布式調(diào)度解決方案,由 2 個(gè)相互獨(dú)立的子項(xiàng)目 ElasticJob-Lite 和 ElasticJob-Cloud 組成。本文主要介紹?ElasticJob-Lite 的基本使用,文中所使用到的軟件版本:Spring Boot?2.4.4、jdk1.8.0_181、elasticjob-lite 3.0.0-RC1。

1、ElasticJob-Lite 簡(jiǎn)介

ElasticJob-Lite 定位為輕量級(jí)無(wú)中心化解決方案,使用jar的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù)。架構(gòu)圖如下:

?詳細(xì)的介紹請(qǐng)參考官網(wǎng)文檔:https://shardingsphere.apache.org/elasticjob/current/cn/overview/

2、使用

2.1、Zookeeper 環(huán)境準(zhǔn)備

ElasticJob-Lite 使用 Zookeeper作為注冊(cè)中心,需先安裝 Zookeeper;安裝方法可參考:https://www.cnblogs.com/wuyongyin/p/12485181.html

2.2、單獨(dú)使用

2.2.1、引入依賴

<dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-core</artifactId><version>3.0.0-RC1</version> </dependency>

2.2.2、樣例

開發(fā) Job:

package com.abc.demo.solo;import org.apache.shardingsphere.elasticjob.api.ShardingContext; import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class MyJob implements SimpleJob {private static Logger logger = LoggerFactory.getLogger(MyJob.class);@Overridepublic void execute(ShardingContext shardingContext) {logger.info(shardingContext.getJobName() + "|" + shardingContext.getShardingItem() + "|" + shardingContext.getShardingParameter());try {Thread.sleep(1000 * 5);} catch (InterruptedException e) {e.printStackTrace();}} }

運(yùn)行 Job:

package com.abc.demo.solo;import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.apache.shardingsphere.elasticjob.api.JobConfiguration; import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap; import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter; import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration; import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter; import org.apache.shardingsphere.elasticjob.tracing.api.TracingConfiguration;import javax.sql.DataSource;public class MyJobDemo {public static void main(String[] args) {CoordinatorRegistryCenter coordinatorRegistryCenter = createRegistryCenter();DataSource dataSource = getDataSource();TracingConfiguration tracingConfig = new TracingConfiguration<>("RDB", dataSource);new ScheduleJobBootstrap(coordinatorRegistryCenter, new MyJob(), createJobConfiguration("job1", tracingConfig)).schedule();new ScheduleJobBootstrap(coordinatorRegistryCenter, new MyJob(), createJobConfiguration("job2", tracingConfig)).schedule();new ScheduleJobBootstrap(coordinatorRegistryCenter, new MyJob(), createJobConfiguration("job3", tracingConfig)).schedule();}private static CoordinatorRegistryCenter createRegistryCenter() {ZookeeperConfiguration zookeeperConfiguration = new ZookeeperConfiguration("10.40.100.69:2181", "my-job");zookeeperConfiguration.setMaxSleepTimeMilliseconds(1000 * 30);zookeeperConfiguration.setConnectionTimeoutMilliseconds(1000 * 30);CoordinatorRegistryCenter coordinatorRegistryCenter = new ZookeeperRegistryCenter(zookeeperConfiguration);coordinatorRegistryCenter.init();return coordinatorRegistryCenter;}private static JobConfiguration createJobConfiguration(String jobName, TracingConfiguration tracingConfig) {JobConfiguration jobConfiguration = JobConfiguration.newBuilder(jobName, 2).shardingItemParameters("0=Beijing,1=Shanghai").cron("0/20 * * * * ?").build();//配置事件追蹤,即記錄任務(wù)執(zhí)行日志jobConfiguration.getExtraConfigurations().add(tracingConfig);return jobConfiguration;}//這里使用 Hikari 連接池,使用 Druid 有時(shí)會(huì)報(bào)錯(cuò)private static DataSource getDataSource() {HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://10.198.0.10:3306/itest?useUnicode=true&characterEncoding=UTF-8");hikariConfig.setUsername("root");hikariConfig.setPassword("Root_123!");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);hikariConfig.setConnectionTestQuery("select 1");HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);return hikariDataSource;} }

2.3、Spring Boot 中整合?ElasticJob-Lite

2.3.1、引入依賴

<dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-spring-boot-starter</artifactId><version>3.0.0-RC1</version> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> </dependency>

2.3.2、application.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.198.0.10:3306/itest?useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456elasticjob:reg-center:server-lists: 10.40.100.69:2181namespace: my-jobmax-sleep-time-milliseconds: 30000connection-timeout-milliseconds: 30000jobs:FirstJob:elasticJobClass: com.abc.demo.job.FirstJobcron: 0/10 * * * * ?shardingTotalCount: 2shardingItemParameters: 0=Beijing,1=ShanghaiScriptJob:elasticJobType: SCRIPTcron: 0/20 * * * * ?shardingTotalCount: 2props:script.command.line: "/home/demo/test.sh"tracing:type: RDB

2.3.3、開發(fā)任務(wù)

com.abc.demo.job.FirstJob:

package com.abc.demo.job;import org.apache.shardingsphere.elasticjob.api.ShardingContext; import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;@Component public class FirstJob implements SimpleJob {private static Logger logger = LoggerFactory.getLogger(FirstJob.class);@Overridepublic void execute(ShardingContext shardingContext) {logger.info(shardingContext.getJobName() + "|" + shardingContext.getShardingItem() + "|" + shardingContext.getShardingParameter());try {Thread.sleep(1000 * 3);} catch (InterruptedException e) {e.printStackTrace();}} }

腳本任務(wù)(/home/demo/test.sh):

echo 'hello' echo 'hello2' echo 'hello3'

2.3.4、啟動(dòng)應(yīng)用

應(yīng)用啟動(dòng)后,任務(wù)開始運(yùn)行。

2.4、部署控制臺(tái)

下載 ElasticJob-Lite-UI 二進(jìn)制包并解壓:https://shardingsphere.apache.org/elasticjob/current/cn/downloads/

在 lib 目錄下增加 MySQL、Druid 的驅(qū)動(dòng)包,然后執(zhí)行 bin/start.sh。

訪問(wèn)地址為:http://10.40.100.69:8088/ (root/root)

來(lái)源:Java 定時(shí)任務(wù)調(diào)度(8)--ElasticJob 入門實(shí)戰(zhàn)(ElasticJob-Lite使用) - 詠吟 - 博客園?

總結(jié)

以上是生活随笔為你收集整理的Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。