Este artigo apresenta o Código de Implementação do Timer Elaticjob integrado do Springboot. Compartilhe com você. Os detalhes são os seguintes:
Configuração do arquivo POM
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion> 4.0.0 </modelversion> <vroupId> com.exempSd </grupo <Versão> 0.0.1-SNAPSHOT </Version> <batyaging> jar </acheging> <name> Demojob </name> <cription> Projeto Demo para boot de primavera </cription> </parent> <puerpid> org.springframework.boot </frupid> <stifactId> Spring-boot-starter-Parent </artiftIf <!-Lookup Parent do Repository-> </axer> <Properts> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <jectpUptinging.outputEncoding> utf-8 </project.reporting.outspoding> <nava.vershers> <Depencency> <PuerpId> org.springframework.boot </frugid> <TRATIFACTID> Spring-boot-starter-web </artifactId> </dependency> <pendence> <puperid> org.springframework.boot </grupo <ArtifactId> scring-boot-scarter-test-test-testert-testertf. <!-elastic-job-> <pendência> <TRAFACTID> elástico-job-common-core </sutifactId> <puperid> com.dangdang </groupid> <versão 2.1.5 </sipers> </dependency> <pendency> <stifactid> elástico-job-lite-core </artefactId> <Versão> 2.1.5 </sisters> </dependency> <pendency> <stifactId> elastic-job-lite-spring </artifactId> <voundid> com.dangdang </groupiD> <sunders> 2.1.5 </versão> </dependency> <spendency> <Artifactid> <SelAbstan-DOdld-Exutor> <Version> 2.1.5 </sisters> </dependency> <!-mariadb-> <pendency> <puperid> org.mariadb.jdbc </groupiD> <ArtifactId> mariadb-java-client </artifactid> <versão 1.5 </versão </dependence> <-drid-drid-drid-> <TarifactId> druid-spring-boot-starter </artifactId> <versão> 1.1.9 </version> </dependency> <!-mybatis plus-> <pendency> <puperiD> com.baomidou </groupid> <stifactId> mybatisplus-spring-boot-starter </purtIf> <PuProuDID> com.baomidou </proupId> <TRORFACTID> mybatis-plus </starifactId> <versão> 2.1.9 </version> </dependency> </dependency> </dependencies> <bruct> <tlugin> <ruftiD> org.springFramework.Oot </GroupId> ArtiftId> Springl-spring-Bring-Bring-BringFramework.BOOT-P </GroupId> Artiftid> </flugins> </fruct> </ject>
Configuração do arquivo YAML (também pode usar o Application.properties)
# Configure Configuração da fonte da fonte: DataSource: Tipo: com.alibaba.druid.pool.druiddataSource Driver-class-name: org.mariadb.jdbc.driver Nome: elastic-job-event URL: jdbc: mariadb: //127.0.0.0.1.1: DRUID: ValidationQuery: Selecione 1 InicialSize: 10 Minidle: 10 Maxactive: 200 MineVictableIdLetimEmillis: 180000 TestonBorrow: False TestWhileIdle: True Removeabandon: True RemokeDonedTimeOut: LocalHost: 2181 namespace: hulk_order_task# Configurar Regras do timer Simplejob: cron: 0/5 * * * *? shardingtotalCount: 1 shardingItemparameter: 0 = 1
Comece a escrever o código
RegistryCenterConfig
pacote com.example.demojob.config; import com.dangdang.ddframe.job.reg.zookeeper.zookeeperConfiguration; importar com.dangdang.ddframe.job.reg.zookeeper.zookeeper.zookeepergorryCentro; org.springframework.boot.autoconfigure.condition.conditionOnexpression; importar org.springframework.context.annotation.bean; importação de org.springframework.context.annotation.configaturation; * @author shudalei */@configuration@condicionalOnexpression ("'$ {regcenter.serverlist}'. length ()> 0") public class RegistryCerConfig {@Bean (initMethod = "init") public zookeeperRegister RegCenter (@Value ("$ {" {"{") @Value ("$ {Regcenter.NamesPace}") Final String Namespace) {Return New ZookeeperReGistryCenter (novo ZookeeperConfiguration (ServerList, Namespace)); }}JobEventConfig
package com.example.demojob.config;import com.dangdang.ddframe.job.event.JobEventConfiguration;import com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.configuration; importar javax.annotation.resource; importar javax.sql.dataSource;/** * Se você deseja escrever o conteúdo do trabalho que está sendo executado no DB, precisamos usar outro construtor. * Atualmente, existe apenas uma classe que implementa essa interface. * Com isso, você pode persistir os vestígios de emprego em execução para o banco de dados. * @Author Shudalei */ @ConfigurationPublic Classe JobEventConfig {@Resource Private DataSource DataSource; @Bean Public JobEventConfiguration JobEventConfiguration () {Return New JobEventDBConfiguration (DataSource); }}Simplejobconfig
pacote com.example.demojob.config; importar com.dangdang.ddframe.job.config.jobcoreconfiguration; importar com.dangdang.ddframe.job.config.simple.simplejobconfiguration; importOb.DanGaturation.jornt.job.job.job.job.job.job.job.job.vent.simplejobconfiguration; importOb. com.dangdang.ddframe.job.lite.api.jobscheduler; importar com.dangdang.ddframe.job.lite.config.litejobconfiguration; import com.dangdang.ddframe.job.lite.spring.api.springjobslers; com.dangdang.ddframe.job.reg.zookeeper.zookeeperRegistryCenter; importar com.example.demojob.job.testsimplejob; importar org.springframework.bean.factory.annotation.value; importação org.springframework.Contet.annotation.annotation.annotation.value; importar.springframework.Contet.annotation.annotation.annotation.value; importação; org.springframework.context.annotation.configuration; importar javax.annotation.resource; @configurationpublic classe Simplejobconfig { / *** Centro de Registro* / @Resource Private ZookeeperRegistryCenter; / *** Configuração do evento de trabalho*/ @Resource JobEventConfiguration JobEventConfiguration; / *** Token de acesso WECHAT Objeto de tarefa**/ @Resource TestsImplejob simplesjob; / ***** @Param cron Tarefa cronometra Configuração cron* @param shardingtotalCount Número de shards de tarefas* @param shardingItemparameters Tarefa Parâmetros de shardbring.Tring.BrinCring.BrinCerT.Trage.BensCHONETER SPORMCHELER*/ @Bean (initMethod = "init") Public JobsCer Sple Simplejobler " cron, @Value("${simpleJob.shardingTotalCount}") final int shardingTotalCount, @Value("${simpleJob.shardingItemParameters}") final String shardingItemParameters) { return new SpringJobScheduler(simpleJob, regCenter, getLiteJobConfiguration(simpleJob.getClass(), Cron, ShardingTotalCount, ShardingItemparameters), JobEventConfiguration); } / **** @Param JobClass Agenda de tarefas* @param cron tonalidade cronida cron configuração* @param shardingtotalCount Número de shards de tarefas* @param shardingItemparameters Tarefa (private LiteJOBCONBCIGCIGCILOBCONBONOBCIMENOBCIMENCIMENTATENCIMENTATENCIMENTATENCIMENTATIONCIMENCIMENTATIONCIMENCIMENTATIONCIMENTATIONCIMENCIMENTATIONCIMENTATIONCIMENTATENCIMENTO (LiteJobConObconOnTensTremation) com.dangdang.ddframe.job.api.simple.simplejob> jobclass, string final, final, int shardingTotalCount, string string finalingItemParameters) {Return litejobconfiguration .NewBuilder (NewJOBConfiguration (JOBCONFONFUNFUNGUNTION. shardingtotalCount) .ShardingItemparameters (shardingItemparameters) .build (), jobclass.getCanonicalName ()) .overWrite (true) .build (); }}Testsimplejob, a própria tarefa do timer
pacote com.example.demojob.job; import com.dangdang.ddframe.job.api.shardingContext; importar com.dangdang.ddframe.job.api.simple.simplejob; importerg.springFramework.PleroType.Emporp.PentJ; // A tarefa é executar a saída do console 1, 2, 3 a cada 5 segundos ... @Override public void Execute (ShardingContext shardingContext) {count ++; System.out.println ("tarefa" + contagem); }} Finalmente, instale o Zookeeper sob o Docker
O arquivo de composição de script de instalação é o seguinte
version: '2'services: zookeeper01: image: zookeeper restart: always hostname: zookeeper01 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zookeeper02:2888:3888 Server.3 = Zookeeper03: 2888: 3888 Zookeeper02: Imagem: Reinicialização do Zookeeper: Sempre Host Nome: Zookeeper02 Portas: - 2182: 2181 Ambiente: ZOO_MY_ID: 2 ZOO_SERVERS: Server.1 = Zookeeper01: 288888888888888888888: Servidor.3 = Zookeeper03: 2888: 3888 Zookeeper03: Imagem: Reinicialização do Zookeeper: Sempre Host Nome: Zookeeper03 Portas: - 2183: 2181 Ambiente: ZOO_MY_ID: 3 ZOO_SERVERS: Server.1 = zookeeper01: 288888888888888888888888888888888888888888888888888888888888888888888888888: Server.3 = 0.0.0.0: 2888: 3888
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.