• ElasticJob+Spring Boot简单使用


    ElasticJob+Spring Boot简单使用

    1、部署zookeeper集群

    使用docker快速部署
    zookeeper.yml

    version: '3.1'
    
    services:
      zoo1:
        image: zookeeper
        restart: always
        hostname: zoo1
        container_name: zoo1
        ports:
          - 2181:2181
        environment:
          ZOO_MY_ID: 1
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
      zoo2:
        image: zookeeper
        restart: always
        hostname: zoo2
        container_name: zoo2
        ports:
          - 2182:2181
        environment:
          ZOO_MY_ID: 2
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
      zoo3:
        image: zookeeper
        restart: always
        hostname: zoo3
        container_name: zoo3
        ports:
          - 2183:2181
        environment:
          ZOO_MY_ID: 3
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    执行

    docker-compose -f zookeeper.yml up
    
    • 1

    验证
    在这里插入图片描述
    成功连上

    2、新建一个Spring Boot项目

    目录结构如下
    pox

    pom.xml

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.7</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>elastic-job-test</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>elastic-job-test</name>
        <description>elastic-job-test</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
    
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </dependency>
    
    
            <!-- https://mvnrepository.com/artifact/org.apache.shardingsphere.elasticjob/elasticjob-lite-spring-boot-starter -->
            <dependency>
                <groupId>org.apache.shardingsphere.elasticjob</groupId>
                <artifactId>elasticjob-lite-spring-boot-starter</artifactId>
                <version>3.0.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    application.yml

    elasticjob:
      regCenter:
        serverLists: localhost:2181
        namespace: elasticjob-lite-springboot
      jobs:
        simpleJob:
          elasticJobClass: com.example.elasticjobtest.job.TestJob
          cron: 0/30 0/1 * * * ?
          timeZone: GMT+08:00
          shardingTotalCount: 3
          shardingItemParameters: 0=Beijing,1=Shanghai,2=Guangzhou
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    TestJob.java

    package com.example.elasticjobtest.job;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.shardingsphere.elasticjob.api.ShardingContext;
    import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
    import org.springframework.stereotype.Component;
    
    
    @Slf4j
    @Component
    public class TestJob implements SimpleJob {
        @Override
        public void execute(ShardingContext context) {
            switch (context.getShardingItem()) {
                case 0:
                    log.info("============0===========");
                    log.info(context.toString());
                    break;
                case 1:
                    log.info("============1===========");
                    log.info(context.toString());
                    break;
                case 2:
                    log.info("============2===========");
                    log.info(context.toString());
                    break;
                default:
                    log.error("============{}===========",context.getShardingItem());
                    break;
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    运行

    勾选Allow parallel run可以同时运行多个Spring Boot项目
    在这里插入图片描述
    起1个程序的时候,3个分片都在接收到了
    在这里插入图片描述
    起2个程序
    在这里插入图片描述
    在这里插入图片描述
    可以看到第2个程序把2个分片拿过去运行了

    zookeeper已经注册上信息
    在这里插入图片描述

    官方文档连接

  • 相关阅读:
    【日拱一卒行而不辍20220921】自制操作系统
    【多线程】阻塞队列 详解
    docker搭建redis哨兵集群并且整合springboot
    Java集合
    记录微信小程序项目遇到的几个问题
    Windows 11又双叒出现Bug,导致截图工具崩溃
    Disruptor-简单使用
    Vue2(完结):replace属性、编程式路由导航、缓存路由组件、两个新钩子、路由守卫、history与hash
    uni-app 之 vue位置怎样设置
    如何使用java代码获取给定月份“所有周末日期”呢?
  • 原文地址:https://blog.csdn.net/qq_41065919/article/details/124715878