Эта статья представляет код реализации интегрированного Timer 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"> <dolidayversion> 4.0.0 </modelversion> <groupid> com.example </Groupid> <tratifactid> demoBactId> demoBActId> demoBActId> demoBActId> artifactid> artifactid> artifactid> artifactid>. <sersion> 0.0.1-snapshot </version> <Cavegaging> jar </packaging> <mame> demojob </name> <description> демо-проект для Spring Boot </description> <parent> <groupid> org.springframework.boot </GroupId> <artifactid> spring-strer-parent </artifactid> <serse> 2.0.12.R. <!-Поиск родителя от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceEncoding> <project.Report.OutputEncoding> utf-8 </project.Reporting.outputencing> <java.version> 1,8 </project.Verting <Depoydency> <groupid> org.springframework.boot </GroupId> <ArtifactId> Spring-Boot-Starter-web </artifactid> </depervice> <dehyedency> <groupid> org.springframework.boot </GroupId> <strifactid> Spring-boot-Starter-test </artifactid> test> rapope> rapope> rapope> </rappope> </rappope> </rappope> </rappope> </rappope> </rappope> artifact> </artifactid> </artifactid>. <!-Elastic-Job-> <Dependency> <TrifactId> Elastic-Job-Common-Core </artifactId> <groupId> com.dangdang </GroupId> <sersive> 2.1.5 </version> </resemend> <dependency> <artifactid> elastic-job-lite-core </artifactid> <groupid> com.dangdang> elastic-job-core </artifactid> <groupid> com.dangdang>. </dependency> <dependency> <artifactId>elastic-job-lite-spring</artifactId> <groupId>com.dangdang</groupId> <version>2.1.5</version> </dependency> <dependency> <artifactId>elastic-job-cloud-executor</artifactId> <groupId>com.dangdang</groupId> <version>2.1.5</version> </deperency> <!-mariadb-> <dependency> <groupid> org.mariadb.jdbc </groupid> <artifactid> mariadb-java-client </artifactid> <sersive> 1.5.4 </version> </vehyed> <!-Druid-> <dependency> <groupd> com.aliba </groupderies> <! <ArtifactId> Druid-spring-boot-starter </artifactid> <sersive> 1.1.9 </version> </dependency> <!-mybatis plus-> <dehydency> <groupid> com.baomidou </GroupId> <ramifactid> mybatisplus-spring-boot-starter </artifactid> <serifuce> 1,0.0.0.0.0.0.0.0.0.0. <groupId> com.baomidou </GroupId> <ArtifactId> mybatis-plus </artifactId> <sersive> 2.1.9 </version> </dependency> </dependency> </dependencies> <buld> <blicin> <groupid> org.springframework.boot </GroupD> <ratifactId> spring-boot-maven-pplugIn-plugin </плагины> </build> </project>
Конфигурация файла YAML (также может использовать Application.properties)
# Настройка источника данных настройки источника данных: DataSource: Type: com.alibaba.druid.pool.druiddatasource драйвер-класс-имени: org.mariadb.jdbc.driver Имя: Elastic-Job-EVent ValidationQuery: Select 1 INIRINESIZE: 10 Minidle: 10 MaxActive: 200 MineVictableIdletimemillis: 180000 TestonBork: False TestWhileIdle: True Removabandoned: True MaxoPenPreAdentimeout: 1800 Logabandoned: True PoolPreparedStatements: True MaxoPenPRearedStatements: 100# configurePereeper: Serverhesteper: Serverhesteper: Serverhosteper: Servorepereper: Serverhesteper. Пространство имен: hulk_order_task# Настроить правила таймера Simplejob: cron: 0/5 * * * *? shardingtotalcount: 1 shardingitemparameters: 0 = 1
Начните писать код
RegistryCenterconfig
пакет com.example.demojob.config; import com.dangdang.ddframe.job.reg.zookeeper.zookeeperconfiguration; импорт com.dangdang.ddframe.job.reg.zookeeper.zookeeper.zookeeperregistry org.springframework.boot.autoconfigure.condition.conditionalonexpression; импорт org.springframework.context.annotation.bean; импорт org.springframework.context.annotation.configuration;/*** Конфигурация. * @author shudalei */@configuration@condentalonexpression ("'$ {regcenter.serverlist}'. Length ()> 0") открытый класс RegistryConconfig {@bean (initmethod = "init") public ZookeeperRegistrycistryCenter regcenter (@Value ("$ {$ {Regccent.SerVerList ') @Value ("$ {regcenter.namespace}") конечная строкация пространства имен) {return new zookeeperregistrycistrycistrycenter (new Zookeeperconfiguration (serverlist, namespace)); }}JobEventConfig
пакет com.example.demojob.config; import com.dangdang.ddframe.job.event.jobeventconfiguration; import com.dangdang.ddframe.job.event.rdb.jobeventrdbconfiguration; импорт org.spramework.nannotation.bean; org.springframework.context.annotation.configuration; import javax.annotation.resource; импорт javax.sql.datasource;/** * Если вы хотите написать содержимое работы, столкнувшегося с DB, нам нужно использовать другой конструктор, * в то же время определяет свою собственную работу. * В настоящее время есть только один класс, который реализует этот интерфейс. * Благодаря этому вы можете сохранить следы работы, работающего до DB. * @author shudalei */ @configurationpublic class jobeventconfig {@resource private dataSource; @Bean public jobEventConfiguration jobEventConfiguration () {return new bobeventrdbconfiguration (dataSource); }}SimpleJobConfig
пакет com.example.demojob.config; import com.dangdang.ddframe.job.config.jobcoreconfiguration; import com.dangdang.ddframe.job.config.simple.simplejobconfiguration; импорт com.dangdang.ddframe.job.jobevnfiguration; import com.dangdang.ddframe.job.jobconfiguration; импорт com.dangdang.ddframe.job. com.dangdang.ddframe.job.lite.api.jobscheduler; импорт com.dangdang.ddframe.job.lite.config.litejobconfiguration; импорт com.dangdang.ddframe.job.lite.spring.api.springjobschedure; com.dangdang.ddframe.job.reg.zookeeper.zookeeperregistrycenter; import com.example.demojob.job.testsimplejob; импорт org.springframework.beans.factory.antation.value; импорт org.spramework.nannotation.bean; org.springframework.context.annotation.configuration; import javax.annotation.resource; @ConfigurationPublic Class SimpleJobConfig { / *** Регистрационный центр* / @resource private ZookeeperRegistryCenter Regcenter; / *** Конфигурация рабочего события*/ @Resource Private JobEventConfiguration jobEventConfiguration; / *** weChat tocken get overse object**/ @resource private testsimplejob simplejob; / ***** @param Cron Timed Task Task Configuration* @param shardingtotalcount Количество бордов задач* @param shardingitemparameters Задача Параметры Sharding* @return jobscheduler Pradeuler*/ @bean (initmethod = "init") public jobscheduler simplejobscheduler (@Valu cron, @value ("$ {simplejob.shardingtotalcount}") final int shardingtotalcount, @value ("$ {simplejob.shardingitemparameters}") final String shardingitemparameters) {return new springjobscheduler (simplejob, simplejobscures. Cron, ShardingtotalCount, ShardingitemParameters), JobEventConfiguration); } / ***** @param jobclass Задача класс* @param cron timed cron configuration* @param shardingtotalcount Количество осколков задач* @param shardingitemparameters task sharding parameters* @return litejobconfiguration configuration* / private litejobconfiguration getlitejobconfiguration <? com.dangdang.ddframe.job.api.simple.SimpleJob> jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters) { return LiteJobConfiguration .newBuilder( new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(jobClass.getName(), cron, shardingtotalcount) .shardingitemparameters (shardingitemparameters) .build (), jobclass.getCanonicalName ())) .Overwrite (true) .build (); }}Testsimplejob, сама задача таймера
пакет com.example.demojob.job; import com.dangdang.ddframe.job.api.shardingcontext; import com.dangdang.ddframe.job.api.simple.simplejob; импорт org.springframework.stepolype.component; @componentpublic class testsimplejob intripmob ratepmors riteplamipjob. // задача состоит в том, чтобы выполнить консольную вывод 1, 2, 3 каждые 5 секунд ... @Override public void execute (shardingcontext shardingcontext) {count ++; System.out.println ("Task" + count); }} Наконец, установите Zookeeper под Docker
Файл сценария установки составлен следующим образом
Версия: '2'services: Zookeeper01: Изображение: Zookeeper Перезапуск: Всегда имя хоста: Zookeeper01 Порты: - 2181: 2181 Среда: Zoo_MY_ID: 1 Zoo_Servers: Server.1 = 0.0.0.0: 2888: 3888 Server.2 = ZOOKEEPER02: 28838888838: 3888. Server.3 = Zookeeper03: 2888: 3888 Zookeeper02: Изображение: Zookeeper Перезагрузка: всегда имя хоста: Zookeeper02 Порты: - 2182: 2181 Среда: Zoo_MY_ID: 2 Zoo_Servers: Server.1 = Zookeeper01: 2888: 3888888888888 гг. Сервер.3 = Zookeeper03: 2888: 3888 Zookeeper03: Изображение: Zookeeper Перезагрузка: всегда имя хоста: Zookeeper03: - 2183: 2181 Среда: Zoo_MY_ID: 3 Zoo_servers: Server.1 = ZOOKEEPER01: 2888: 3888 Server.2 = ZOEKEEPER. 388888888888 гг. Сервер.3 = 0,0.0.0: 2888: 3888
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.