Este artículo presenta el código de implementación del temporizador de ElaticJob integrado SpringBoot. Compártalo contigo. Los detalles son los siguientes:
Configuración del archivo de POM
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" 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> <MoupRoupid> com.example </groupid> <artifactid> DemoJOB </ArtiFactid> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demojob</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> < <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> < <Persion> 2.1.5 </versión> </pendency> <epardency> <artifactid> elastic-job-lite-spring </artifactid> <grupoD> com.dangdang </groupid> <version> 2.1.5 </versión> </pendency> <epepte> <artifactid> elastic-job-cloud-eexecutor </artifactid> <proupiD> <paperid> <versión> 2.1.5 </versión> </pendency> <!-mariadb-> <pendency> <grupid> org.mariadb.jdbc </groupid> <artifactid> mariadb-java-client </arfactid> <version> 1.5.4 </versión> </pendency> <! <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency> <!--mybatis plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatisplus-spring-boot-starter</artifactId> <version>1.0.5</version> </dependency> <dependency> <MoupRid> com.baomidou </groupid> <artifactid> mybatis-plus </artifactid> <versión> 2.1.9 </versión> </pendency> </pendency> </dependencias> <construcción> <glugin> <grupo> org.springframe.boot </groupid> <artifactid> spring-boot-maven-plugen </arthactramework </glugins> </build> </proyecto>
Configuración del archivo YAML (también puede usar Application.Properties)
# Configurar la fuente de datos de configuración Spring: DataSource: Tipo: com.alibaba.druid.pool.druiddataSource controlador-class-class: org.mariadb.jdbc.driver name: elastic-job-event url: jdbc: mariAdb: //127.0.0.1: 3306/elasticjob usa de la usuario: 1234454454454454454545454545 CASACIÓN: 123454 ValidationQuery: Seleccione 1 Inicialización: 10 Minidle: 10 Maxactive: 200 MinevictableDetimemillis: 180000 testOnBorrow: false test whileidle: true eliminar aBoabandoned: verdadero removeAbaBaBaBaBaNedTimeOut: 1800 logAbandoned: verdadero PoolpreparedStatements: verdadero maxopenpreparedStatements: 100# Configurar ZookeEperregerer: Servidor: Servidor: Localhost: 2181 espacio de nombres: hulk_order_task# Configurar reglas de temporizador SimpleJob: Cron: 0/5 * * * *? ShardingTotalCount: 1 ShardingItemparameters: 0 = 1
Empiece a escribir código
RegistryScenterConfig
paquete com.example.demoJob.config; import org.springframework.boot.autoconfigure.condition.conditionalonexpression; import org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration;/*** Configuración de registro* Componente para registrar y coordinar el comportamiento de trabajo distribuido actualmente actualmente Zooke. * @author shudalei */@Configuration@ConditionalOnExpression("'${regCenter.serverList}'.length() > 0")public class RegistryCenterConfig { @Bean(initMethod = "init") public ZookeeperRegistryCenter regCenter(@Value("${regCenter.serverList}") final String serverList, @Value ("$ {regCenter.namespace}") String Final String NameSpace) {return New ZookeeperRegistryCenter (new ZookeePerconfiguration (ServerList, Namespace)); }}JobEventConfig
paquete com.example.demoJob.config; import org.springframework.context.annotation.configuration; import javax.annotation.resource; import javax.sql.dataSource;/** * Si desea escribir el contenido del trabajo que se encuentra con el DB, necesitamos usar otro constructor, * al mismo tiempo, definir su propio trabajo con el trabajo. * Actualmente, solo hay una clase que implementa esta interfaz. * A través de esto, puede persistir los rastros de trabajo que se ejecuta a DB. * @Author Shudalei */ @ConfigurationPublic de clase JobEventConfig {@Resource Private DataSource DataSource; @Bean Public JobEventConfiguration JobEventConfiguration () {return New JobEventRDBConfiguration (DataSource); }}SimpleJobConfig
paquete com.example.demoJob.config; import com.dangdang.ddframe.job.config.jobcoreconfiguation; import com.dangdang.ddframe.job.lite.api.jobscheduler; import com.dangdang.ddframe.job.lite.config.litejobconfiguration; import com.dangdang.ddframe.job.lite.spring.api.springjobscheduler; import com.dangdang.ddframe.job.reg.zookeeper.zookeeperregistrycenter; import com.example.demoJob.job.testsimplejob; importar org.springframework.beans.factory.annotation.value; import og.springframework.context.annotation.bean; importar; import org.springframework.context.annotation.configuration; import javax.annotation.resource; @configurationPublic classyJobConfig { / *** Centro de registro* / @Resource ZookeePerregerRistryCenter Regcenter; / *** Configuración de eventos de trabajo*/ @Resource JobEventConfiguration JobEventConfiguration; / *** WeChat Access Token Obtener objeto de tarea**/ @Resource Private TestSimpleJob SimpleJob; / ***** @param cron Tarea cronada Configuración de Cron* @param ShardingToTalCount Número de fragmentos de tareas* @param ShardingItemParameters Tarea Tarea de fragmentación de parámetros* @return JobsCheduler Task Scheduler*/ @Bean (InitMethod = "Init") Public JobsCheduler SimpleJobScheduler (@Value ("$ {" $ {"SimpleC.job.J) cron, @Value ("$ {simplyJob.ShardingTotalCount}") final int frehingToTalCount, @Value ("$ {simplyJob.ShardingItemParameters}") String Final String ShardingItemEmeters) {return SpringJobsCheduler (SimpleJob, Regcenter, GetLiteJobConfiguration (SimpleB.TetMass (SimpleMass (SimpleMass (simple) Cron, ShardingTotalCount, ShardingItemparameters), JobEventConfiguration); } / **** @param JobClass Task Programación Clase* @param Cron Tarea cronada Configuración de Cron* @param ShardingToTalCount de fragmentos de tareas* @param ShardingItemParameters Ayudas de tareas Parámetros* @Return LiteJobConfiguration Configuración de tareas* / privado LiteJobConfiguration com.dangdang.ddframe.job.api.simple.simplejob> JobClass, final String cron, final int shardingtotalCount, string string string sharditingitemparameters) {return liteJobConfiguration .newBuilder (nuevo sencilloJobconfiguration (JobCoConfiguration.newbuilder (JobClass.getName (), CRACONFIGUN ShardingTotalCount) .ShardingItemParameters (ShardingItemParameters) .Build (), JobClass.getCanonicalName ())) .overwrite (true) .Build (); }}TestSimpleJob, la tarea del temporizador en sí misma
paquete com.example.demoJob.job; import com.dangdang.ddframe.job.api.shardingcontext; import com.dangdang.ddframe.job.api.simple.simplejob; import og.springframe.stereotpe.component;@componentpublicte classsImpleJobJobsJobsJobs SimpleB {privado simpleB {privado simpleB; // La tarea es ejecutar la salida de la consola 1, 2, 3 cada 5 segundos ... @Override public void ejecute (ShardingContext ShardingContext) {Count ++; System.out.println ("Tarea" + Count); }} Finalmente, instale Zookeeper en Docker
El archivo de composición del script de instalación es el siguiente
Versión: '2'Services: Zookeeper01: Imagen: Zookeepers Reinicion: Always Name: Zookeeper01 Puertos: - 2181: 2181 Entorno: Zoo_my_id: 1 Zoo_Servers: Server.1 = 0.0.0.0: 2888: 3888 Server.2 = Zookeeper02: 2888: 3888888888888888 servidor.3 = ZOOKEEPER03: 2888: 3888 ZOOKEEPER02: Imagen: Zookeepers Reinicion: Always HostName: Zookeeper02 Ports: - 2182: 2181 Entorno: zoo_my_id: 2 zoo_servers: servidor.1 = ZOOKEEPER01: 2888: 3888 SERVER.2 = 0.0.0.0.0.0: 288888888 servidor.3 = ZOOKEEPER03: 2888: 3888 ZOOKEEPER03: Imagen: Zookeeper Reinicito: Always HostName: Zookeeper03 Puertos: - 2183: 2181 Entorno: Zoo_my_id: 3 Zoo_Servers: Server.1 = ZOOKEEPER01: 2888: 3888 servidor.2 = ZOOKEEPER02: 2888: 3888 servidor.3 = 0.0.0.0: 2888: 3888
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.