美文网首页
Elastic-job-lite 入门

Elastic-job-lite 入门

作者: 好好先生90 | 来源:发表于2018-08-23 19:53 被阅读0次

    在做这个例子之前先安装好数据库,Zookeeper等软件,这里例子部署3个job执行。
    一,使用SPRING INITIALIZR https://start.spring.io/ 生成项目,然后添加Elastic-job-lite相关依赖。pom如下:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <elastic-job.version>2.1.5</elastic-job.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>2.2.6</version>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>3.2.0</version>
            </dependency>
            <dependency>
                <groupId>com.dangdang</groupId>
                <artifactId>elastic-job-lite-core</artifactId>
                <version>${elastic-job.version}</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.dangdang/elastic-job-lite-spring -->
            <dependency>
                <groupId>com.dangdang</groupId>
                <artifactId>elastic-job-lite-spring</artifactId>
                <version>${elastic-job.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.2</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    

    二,写job

    @Slf4j
    public class MyElasticJob implements SimpleJob {
    
        @Override
        public void execute(ShardingContext context) {
            switch (context.getShardingItem()) {
                case 0:
                    // do something by sharding item 0
                    log.info("" + context.getShardingItem() + "," + context.getShardingTotalCount() + "," + context.getShardingParameter());
                    break;
                case 1:
                    // do something by sharding item 1
                    log.info("" + context.getShardingItem() + "," + context.getShardingTotalCount() + "," + context.getShardingParameter());
                    break;
                case 2:
                    // do something by sharding item 2
                    log.info("" + context.getShardingItem() + "," + context.getShardingTotalCount() + "," + context.getShardingParameter());
                    break;
                // case n: ...
            }
        }
    }
    

        自定义异常处理类

    /**
     * 自定义异常处理
     * @author
     */
    public class CustomJobExceptionHandler implements JobExceptionHandler {
        private Logger logger = LoggerFactory.getLogger(CustomJobExceptionHandler.class);
    
        @Override
        public void handleException(String jobName, Throwable cause) {
            logger.error(String.format("Job '%s' exception occur in job processing", jobName), cause);
            //这里自定义异常处理逻辑
        }
    }
    

    三,创建数据库

    CREATE DATABASE IF NOT EXISTS `batch_log`
    

    四,配置job.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"
           xmlns:job="http://www.dangdang.com/schema/ddframe/job"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.dangdang.com/schema/ddframe/reg
                            http://www.dangdang.com/schema/ddframe/reg/reg.xsd
                            http://www.dangdang.com/schema/ddframe/job
                            http://www.dangdang.com/schema/ddframe/job/job.xsd
                            ">
        <!--configure registry center -->
        <reg:zookeeper id="regCenter" server-lists="localhost:2181" namespace="dd-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
    
        <bean id="elasticJobLog" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
            <property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/batch_log"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </bean>
    
        <!--configure job -->
        <job:simple id="myElasticJob" class="com.vcredit.elasticjobdemo.job.MyElasticJob"
                    registry-center-ref="regCenter"
                    cron="0/59 * * * * ?"
                    sharding-total-count="3"
                    sharding-item-parameters="0=上海,1=北京,2=深圳"
                    description="我的第一个简单作业"
                    overwrite="true"
                    event-trace-rdb-data-source="elasticJobLog"
                    job-exception-handler="com.vcredit.elasticjobdemo.job.CustomJobExceptionHandler"/>
    </beans>
    

    五,在启动类上引入配置文件

    @ImportResource(value = {"classpath:job.xml"})
    @SpringBootApplication
    public class ElasticJobDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ElasticJobDemoApplication.class, args);
        }
    }
    

    六,配置yml文件

    spring:
      profiles:
        active: peer1
    
    ---
    spring:
      profiles: peer1
    server:
      port: 8080
    
    ---
    spring:
      profiles: peer2
    server:
      port: 8081
    
    ---
    spring:
      profiles: peer3
    server:
      port: 8082
    

    七,启动程序

    java -jar elastic-job-lite-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
    java -jar elastic-job-lite-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
    java -jar elastic-job-lite-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
    

    八,这一步使用elastic-job-lite-console以图形化的方式查看job。
        首先到https://gitee.com/elasticjob/elastic-job下载源码,然后打包elastic-job-lite-console,到target目录,可以看到生成了压缩文件,拷贝压缩文件,解压缩,执行bin目录里面的start.bat或者start.sh,账号配置在conf目录下的auth.properties中,默认管理员账号密码都是root。
        首先在全局配置>注册中心配置页面添加zookeeper配置,配置好之后点击右边连接按钮。

    elastic-job-lite-console.png

        然后在全局配置>事件追踪数据源配置页面添加数据库配置,配置好之后点击右边连接按钮。

    1535026235(1).png

        然后在作业操作>作业维度就可以看到你的job配置信息。点击修改按钮可以修改job配置。

    1535026491(1).png 1535026594(1).png
        在作业历史>历史轨迹中可以查看作业执行情况。

    相关文章

      网友评论

          本文标题:Elastic-job-lite 入门

          本文链接:https://www.haomeiwen.com/subject/urgmiftx.html