이 기사는 SpringBoot 통합 ElaticJob 타이머의 구현 코드를 소개합니다. 당신과 공유하십시오. 세부 사항은 다음과 같습니다.
POM 파일 구성
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.example> <artifactid> demojob <버전> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> demojob </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <부모> <groupid> org.springframewort.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <version> 2.0.2. release>. <!-리포지토리에서 부모를 조회합니다-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.va.va.va. <pectionies> <pectinement> <groupId> org.springframework.boot </groupid> <artifactid> Spring-Boot-Starter-web </artifactid> </dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> test> </의존성> <!-탄성-조브-> <Artifactid> 탄성-조브-커먼트 코어 </artifactid> <groupid> com.dangdang </groupid> <bersion> 2.1.5 </version> </dependency> <artifactid> antifactid> elasisk-job-lite-core </artifactid> <버전> 2.1.5 </version> </dependency> <pectionement> <artifactid> 탄성-조브-라이트 스프링 </artifactid> <groupid> com.dangdang </groupid> <버전> 2.1.5 </version> </fexendency </afcevency </artifactid> <버전> 2.1.5 </version> </fectionency> <!-mariadb-> <pectionency> <groupid> org.mariadb.jdbc </groupid> <artifactid> mariadb-java-client </artifactid> <version> 1.5.4 </version> </fectomency> <!-druid-> <groupid> com.aliba <Artifactid> druid-spring-boot-starter </artifactid> <bersion> 1.1.9 </version> </dependency> <!-mybatis plus-> <pectionency> <groupid> com.baomidou </groupid> <artifactid> mybatisplus-spring-boot-starter </artifactid> </version> 1.0.5 .5. <groupid> com.baomidou </groupid> <artifactid> mybatis-plus </artifactid> <bersion> 2.1.9 </version> </fectionency> </fectionency> </fectionements> <build> <plugin> <groupid> org.spramework.boot </groupactid> spring-hoot-mug </artifactin> </plugin> </plugins> </build> </project>
YAML 파일 구성 (Application.properties를 사용할 수 있음)
# 구성 데이터 소스 스프링 : DataSource : type : com.alibaba.druid.pool.druiddatasource Driver-Class-Name : org.mariadb.jdbc.driver 이름 : Elastic-job-Event URL : JDBC : //127.0.0.1 : 3306/elasticjob username : root username : root vescername : jdbc : jdbc : jdbc : //127.0.0.1. DRUID : ValidationQuery : 1 초 이니셜 크기 : 10 Minidle : 10 Maxactive : 200 MinevictableDletimemillis : 180000 TestonBrong : False TestwhileIdle : True RemoveAbandoned : True RemoveAbandonedTimeout : 1800 Logabanding : True PoolpreedStatements : True MaxoPenpparedStatements : 100# heforepepereper : 100# LocalHost : 2181 네임 스페이스 : hulk_order_task# 타이머 규칙 구성 SimpleJob : Cron : 0/5 * * * *? ShardingTotalCount : 1 ShardingItemparameters : 0 = 1
코드 작성을 시작하십시오
RegistryCenterConfig
package com.example.demojob.config; import com.dangdang.ddframe.job.reg.zookeeper.zookeeperconfiguration; import com.dangdang.ddframe.job.reg.zookeeper.zookeeper.zookeeper.zookeeper.zookeeper.zookeeper.springframework.beans.beans org.springframework.boot.autoconfigure.condition.conditionalOnexpression; import org.springframework.context.annotation.bean; import org.sprameframework.context.annotation.configuration;/*** Registration Center Configuration 등록 및 조정 행동에 대한 구성 요소. * @author shudalei */@configuration@conditionalOnexpression ( " '$ {regcenter.serverlist}'. length ()> 0") public class registrycenterConfig {@bean (initmethod = "init") public zetepergistrescenter regcenter (@value ( "$ {regcerter.serverlist})")). @Value ( "$ {regcenter.namespace}") 최종 문자열 네임 스페이스) {return new ZookeeperRegistryCenter (New ZookeEperConfiguration (ServerList, Namespace)); }}JobEventConfig
package com.example.demojob.config; import com.dangdang.ddframe.job.event.jobeventConfiguration; import com.dangdang.ddframe.job.event.rdb.jobeventBConfiguration; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import javax.annotation.resource; import javax.sql.datasource;/** * DB에 실행되는 작업의 내용을 작성하려면 다른 생성자를 사용해야합니다. * 현재이 인터페이스를 구현하는 클래스는 하나뿐입니다. *이를 통해 DB로 실행되는 작업의 흔적을 지속 할 수 있습니다. * @author shudalei */ @configurationpublic class jobeventConfig {@Resource private dataSource dataSource; @bean public jobeventConfiguration jobEventConfiguration () {return new jobEventRDBConfiguration (DataSource); }}SimpleJobConfig
package com.example.demojob.config; import com.dangdang.ddframe.job.config.jobcoreconfiguration; import com.dangdang.ddframe.job.config.simple.simplejobconfiguration; import com.dangdang.dddframe.job.event.jobeventconfigation; com.dangdang.ddframe.job.lite.api.jobscheduler; import com.dangdang.ddframe.job.lite.config.litejobconfiguration; import com.dangdang.ddframe.job.lite.spring.api.springjobscheduler; com.dangdang.ddframe.job.reg.zookeeper.zookeeperregistorcenter; import com.example.demojob.job.testsimplejob; import org.springframework.beans.annot.annot. import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import javax.annotation.resource; @configurationpublic class simplejobconfig { / *** 등록 센터* / @Resource private ZookeEperRegistresenter regcenter; / *** 작업 이벤트 구성*/ @Resource 개인 jobeventConfiguration jobEventConfiguration; / *** WeChat 액세스 토큰 작업 개체**/ @Resource 개인 testsimplejob simplejob; / **** @param cron timed task cron configuration* @param shardingtotalcount 작업 샤드 수* @param shardingitemparameters 태스크 샤딩 매개 변수* @return jobscheduler task scheduler*/ @bean (public jobscheduler simplejobscheduler ( @value}) String Cron, @Value ( "$ {SimpleJob.ShardingTotalCount}") 최종 int ShardingTotalCount, @Value ( "$ {simpleJob.ShardingItemParameters}") 최종 문자열 ShardingItemParameters) {Return New SpringJobscheduler (SimpleJob, Regcenter, RecenceRceder, getLiteJobConfiguration (SimpleJob.getClass (), Cron, ShardingTotalCount, ShardingItemParameters), jobEventConfiguration); } / **** @param jobClass 작업 스케줄링 클래스* @param cron timed task cron configuration* @param shardingtotalcount task gast 샤드 샤드 매개 변수 샤드 매개 변수* @return litejobconfiguration task 구성* / private litejobconfiguration getljobconfigpigation (firal litejobconfiguration getljobconfigpigation). com.dangdang.ddframe.job.api.simple.simplejob> jobClass, 최종 문자열 Cron, 최종 int ShardingTotalCount, Final String ShardingItemParameters) {return liteJobConfiguration .NewBuilder (newjobConfiguration (jobCoreConfiggiggigation.newBuilder) SHARDINGTOTALCOUNT) .ShardingItemParameters (ShardingItemParameters) .build (), jobClass.getCanonicalName ())) .Overwrite (true) .build (); }}타이머 작업 자체 인 TestSimpleJob
package com.example.demojob.job; import com.dangdang.ddframe.job.api.shardingcontext; import com.dangdang.ddframe.job.api.simple.simplejob; import org.spramework.stereotyp.component; @componentpublic class testsimplejob {private int -{frible job {private infublic 클래스; // 작업은 5 초마다 콘솔 출력 1, 2, 3을 실행하는 것입니다 ... @override public void execute (ShardingContext shardingContext) {count ++; System.out.println ( "task" + count); }} 마지막으로 Docker 아래에 Zookeeper를 설치하십시오
설치 스크립트 작성 파일은 다음과 같습니다
버전 : '2'services : Zookeeper01 : Zime : Zookeeper Respart : Always hostname : Zookeeper01 포트 : - 2181 : 2181 환경 : zoo_my_id : 1 zoo_servers : server.1 = 0.0.0.0 : 288 : 3888 serv.2 = Zookeeper02 : 2888 : 3888888 : 3888 : 3888 : Zoke03 : 2888 : Zookeeper02 : 이미지 : Zookeeper Respart : Always hostname : Zookeeper02 포트 : -2182 : 2181 환경 : Zoo_my_id : 2 zoo_servers : server.1 = Zookeeper01 : 2888 : 3888 Server.2 = 0.0.0.0 : 2888 : 3888 SEVERT.3 : ZOKEOKEPER0 : ZOKEOKEPER0 : ZOKEOKEPER0 : ZOKEOKEPER0 : 다시 시작 : 항상 호스트 이름 : Zookeeper03 포트 : -2183 : 2181 환경 : ZOO_MY_ID : 3 ZOO_SERVERS : Server.1 = Zookeeper01 : 2888 : 3888 Server.2 = Zookeeper02 : 2888 : 3888 Server.3 = 0.0.0.0 : 2888 : 38888
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.