この記事では、Springboot Integrated 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 <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> demojob </name> <description> spring boot </description> <parent> <parent> springframework.boot </groupid> <artifactid> spring-boot-starter-vertion </artifactid> <RecationPath/> <! - リポジトリからのlookup parent-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding </properties> <dependencies> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <ependency> <ependency> org.springframework.boot </groupid> spring-boot-stortid> <scope> test </scope> </dependency> <! - elastic-job-> <dependency> <artifactid> Elastic-job-common-core </artifactid> <groupid> com.dangdang </groupid> <バージョン<groupid> com.dangdang </groupid> <version> 2.1.5 </version> </dependency> <dependency> <eprastic-job-lite-spring </artifactid> <groupid> com.dangdang </groupid> <バージョン> 2.1.5 </バージョン> <groupid> com.dangdang </groupid> <bersion> 2.1.5 </version> </dependency> <! - mariadb-> <dependency> <groupid> org.mariadb.jdbc </groupid> <artifactid> mariadb-java-client </artifactid> <バージョン<GroupId> com.alibaba </groupid> <artifactid> druid-spring-boot-starter </artifactid> <version> 1.1.9 </version> </dependency> <! - mybatis plus-> <shipid> com.baomidou </groupid> <artifactid> mybatisplus-spring-boot> <バージョン> 1.0.5 </version> </dependency> <dependency> groupid> com.baomidou </groupid> <artifactid> mybatis-plus </artifactid> <バージョン> 2.1.9 </version> </dependency> </dependency> </dependencies> <build> <プラグ> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
YAMLファイル構成(Application.Propertiesも使用できます)
#構成データソースの構成スプリング:データソース:タイプ:com.alibaba.druid.pool.druiddatasourceドライバークラス名:org.mariadb.jdbc.driver名:Elastic-Job-Event URL:JDBC:Mariadb://127.0.0.1:3306/Elasticadid:road druename:row-useName: validationQuery:1イニシャルサイズを選択:10ミニドル:10 maxactive:200 minevictableidletimemillis:180000 testonborrow:false testwhiledle:true removeabandoned:1800 logabanded:true pooplepreparedStatements:true maxopenpredestements:100#confyure zoekeeperregeer reageer reageer reageertatement localhost:2181 namespace:hulk_order_task#configureタイマールールsimplejob:cron:0/5 * * * *? ShardingTotalCount:1 ShardingItemParameters:0 = 1
コードの書き込みを開始します
registrycenterconfig
パッケージcom.example.demojob.config;インポートcom.dangdang.ddframe.job.zookeeper.zookeeperconfiguration; Import com.dangdang.ddframe.job.reg.zookeeper.zookeeper.zookeeperregistrycenter; org.springframework.boot.autoconfigure.condition.conditionalonexpression; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; * @author shudalei */@configuration@cossionalonexpression( "'$ {regcenter.serverlist}'。length()> 0")public class registrycenterconfig {@bean(initmethod = "inite")public zookeeperregistrycenter regcenter(@value( "$ {{regenter.serverlist}" @value( "$ {regcenter.namespace}")final string namespace){return new zookeeperregistrycenter(new zookeeperconfiguration(serverlist、namespace)); }}JobEventConfig
パッケージcom.example.demojob.config;インポートcom.dangdang.ddframe.job.event.jobeventconfiguration; Import com.dangdang.ddframe.ddframe.job.event.rdb.jobeventrdbconfiguration; Import org.springframe.context.annotation.annotation.notation; org.springframework.context.annotation.configuration; import javax.annotation.resource; import javax.sql.datasource;/** * dbに走るジョブの内容を書きたい場合は、別のコンストラクターを使用する必要があります。 *現在、このインターフェイスを実装するクラスは1つだけです。 *これにより、ジョブの痕跡をdbに維持できます。 * @author shudalei */ @configurationpublic class jobeventconfig {@resource private dataSource dataSource; @bean public jobeventconfiguration jobentconfiguration(){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.ddframe.job.event.JobEventConfiguration;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; Import org.springframework.beans.factory.annotation.Value; Import org.springframe.context.nontation.annotation.notation.Bun org.springframework.context.annotation.configuration; import javax.annotation.resource; @configurationpublic class simplejobconfig { / ***登録センター* / @ResourceプライベートZooKeeperRegistryCenter Regcenter; / ***ジョブイベント構成*/ @ResourceプライベートJobEntConfiguration jobEntConfiguration; / *** wechatアクセストークンタスクオブジェクトを取得**/ @ResourceプライベートTestSimpleJob simpleJob; / **** @Param CronタイムされたタスクCron Configuration* @Param ShardingTotalCountタスクシャードの番号* @Param ShardingItemParametersタスクパラメーター* @return JobsChedulerタスクスケジューラー*/ @bean(initmethod = "init")simplejob. simplejob. "$ simplejob." $ simplejob. cron、@value( "$ {simplejob.shardingtotalcount}")final int shardingtotalcount、 @value( "$ {simplejob.shardingitemparameters}")最終的な弦シャルディンティンタムパラメーター){return new springjobscheduler(simplejob.getriteder、getcenter、regenter、regenter、regenter、simplejob. cron、shardingtotalcount、shardingitemparameters)、jobeventconfiguration); } / **** @param JobClassタスクスケジューリングクラス* @param CronタイミングタスクCRON設定* @Param ShardingTotalCountタスクシャードの数* @Param ShardingItemParametersタスクシャードパラメーター* @return LiteJobConfigurationタスク構成com.dangdang.ddframe.job.api.simple.simplejob> jobclass、final string cron、final int shardingtotalcount、final shardingitemparameters){return litejobconfiguration .newbuilder(new simplejobconfiguration(newcoreconfiguration.newbuirder()newbuirer()newbuirder() 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; Import org.springframework.stereotec.component; //タスクは、5秒ごとにコンソール出力1、2、3を実行することです。 System.out.println( "task" + count); }}
最後に、dockerの下にZookeeperをインストールします
インストールスクリプトの構成ファイルは次のとおりです
バージョン: '2'services:zookeeper01:image:zookeeper restart:whostname:zookeeper01ポート:-2181:2181環境:zoo_my_id:1 zoo_servers:server.1 = 0.0.0.0:2888:3888サーバーServer.3 = Zookeeper03:2888:3888 Zookeeper02:画像:Zookeeper RestArt:Always HostName:Zookeeper02ポート:-2182:2181環境:Zoo_my_id:2 Zoo_Servers:Server.1 = Zookeeper01:28888:388888:3888888:0.0.0.0.0.0.0.0.0.0.0.0.0.0.0。 server.3=zookeeper03:2888:3888 zookeeper03: image: zookeeper restart: always hostname: zookeeper03 ports: - 2183:2181 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zookeeper01:2888:3888 server.2=zookeeper02:2888:3888 Server.3 = 0.0.0.0:2888:3888
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。