当当elasticJob详细版本,抽取出来成为公共部分及使用,内容有点多,需要的老铁耐心查阅。。。。。。。。

抽取部分

<!--定时任务-->
        <dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-core</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-spring</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.mz.paascloud.common</groupId>
            <artifactId>paascloud-common-elasticjob</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>
import com.dangdang.ddframe.job.lite.api.JobScheduler;


public abstract class AbsInitAddJob {
    /**
     * 添加定时任务配置
     *
     * @param elasticJobHandler
     */
    public abstract JobScheduler addJob(ElasticJobHandler elasticJobHandler);
}

import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.lite.api.JobScheduler;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;

/**
 * 配置定时器
 */
@Slf4j
@Configuration
public class ElasticJobConfig {
    @Resource
    private ElasticJobHandler elasticJobHandler;
    @Autowired
    AbsInitAddJob addJob;


    public ElasticJobConfig() {
    }

    /**
     * 创建任务调度器
     *
     * @return
     */
    @Bean(initMethod = "init")
    public JobScheduler simpleJobScheduler() {
        return addJob.addJob(elasticJobHandler);
    }

    /**
     * @Description 任务配置类
     */
    private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass,
                                                         final String cron,
                                                         final int shardingTotalCount,
                                                         final String shardingItemParameters) {
        JobCoreConfiguration jobCoreConfiguration = JobCoreConfiguration.newBuilder(
                jobClass.getName(), cron, shardingTotalCount)
                .shardingItemParameters(shardingItemParameters)
                .build();
        SimpleJobConfiguration simpleJobConfiguration = new SimpleJobConfiguration(jobCoreConfiguration, jobClass.getCanonicalName());
        return LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite(true).build();

    }

    @Bean
    public ElasticJobListener elasticJobListener() {
        return new ElasticJobListener(100, 100);
    }
}

import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
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 org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class ElasticJobHandler {
    @Resource
    private ZookeeperRegistryCenter registryCenter;
    @Resource
    private ElasticJobListener elasticJobListener;

    /**
     * @param jobName
     * @param jobClass
     * @param shardingTotalCount
     * @param cron
     * @param id                 数据ID
     * @return
     */
    private static LiteJobConfiguration.Builder simpleJobConfigBuilder(String jobName,
                                                                       Class<? extends SimpleJob> jobClass,
                                                                       int shardingTotalCount,
                                                                       String cron,
                                                                       String id) {
        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(
                JobCoreConfiguration.newBuilder(jobName, cron, shardingTotalCount).jobParameter(id).build(), jobClass.getCanonicalName().split("\\$\\$")[0]));
    }

    /**
     * 添加定时任务通用方法
     * @param jobName
     * @param cron
     * @param shardingTotalCount
     * @param id
     * @param simpleJob
     */
    public void addJob(String jobName, String cron, Integer shardingTotalCount, String id, SimpleJob simpleJob) {
        Class<? extends SimpleJob> aClass = simpleJob.getClass();
        LiteJobConfiguration jobConfig = simpleJobConfigBuilder(jobName, aClass, shardingTotalCount, cron, id)
                .overwrite(true).build();
        new SpringJobScheduler(simpleJob, registryCenter, jobConfig, elasticJobListener).init();
    }
}

 

import com.dangdang.ddframe.job.executor.ShardingContexts;
import com.dangdang.ddframe.job.lite.api.listener.AbstractDistributeOnceElasticJobListener;

public class ElasticJobListener extends AbstractDistributeOnceElasticJobListener {
    public ElasticJobListener(long startedTimeoutMilliseconds, long completedTimeoutMilliseconds) {
        super(startedTimeoutMilliseconds, completedTimeoutMilliseconds);
    }


    @Override
    public void doBeforeJobExecutedAtLastStarted(ShardingContexts shardingContexts) {
    }

    @Override
    public void doAfterJobExecutedAtLastCompleted(ShardingContexts shardingContexts) {
    }
}
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * 配置定时器
 */
@Component
@Data
@ConfigurationProperties(prefix = "zookeeper")
public class ZookeeperJobConfig {
    private String serverlists;
    private String namespace;
    @Bean
    public ZookeeperConfiguration zkConfig() {
        return new ZookeeperConfiguration(serverlists, namespace);
    }

    @Bean(initMethod = "init")
    public ZookeeperRegistryCenter regCenter(ZookeeperConfiguration config) {
        return new ZookeeperRegistryCenter(config);
    }

}

进行使用部分


@Component("*_ElasticJobConfig")
@Configuration
public class ElasticJobConfig extends AbsInitAddJob {

    /**
     * 定时任务开关
     */
    @Value("${elasticJob.enable}")
    private boolean enable;
    //为任务的分片数量(即同时同时开几个定时任务)
    @Value("${elasticJob.shardingTotalCount}")
    private int shardingTotalCount;
    @Value("${elasticJob.userReadLogJobCron}")
    private String userReadLogJobCron;
    @Value("${elasticJob.userCommentJobCron}")
    private String userCommentJobCron;
    @Value("${elasticJob.userFabulousJobCron}")
    private String userFabulousJobCron;
    @Value("${elasticJob.userSituationJobCron}")
    private String userSituationJobCron;
    @Value("${elasticJob.userReadLogDataArchivingJobCron}")
    private String userReadLogDataArchivingJobCron;
    @Value("${elasticJob.userCommentDataArchivingJobCron}")
    private String userCommentDataArchivingJobCron;
    @Value("${elasticJob.userFabulousDataArchivingJobCron}")
    private String userFabulousDataArchivingJobCron;
    @Value("${elasticJob.userSituationDataArchivingJobCron}")
    private String userSituationDataArchivingJobCron;

    @Autowired
    private UserReadLogJob userReadLogJob;
    @Autowired
    private UserCommentJob userCommentJob;
    @Autowired
    private UserFabulousJob userFabulousJob;
    @Autowired
    private UserSituationJob userSituationJob;
    @Autowired
    private UserReadLogDataArchivingJob userReadLogDataArchivingJob;
    @Autowired
    private UserCommentDataArchivingJob userCommentDataArchivingJob;
    @Autowired
    private UserFabulousDataArchivingJob userFabulousDataArchivingJob;
    @Autowired
    private UserSitationDataArchivingJob userSitationDataArchivingJob;


    @Override
    public JobScheduler addJob(ElasticJobHandler elasticJobHandler) {
        if (enable) {
            elasticJobHandler.addJob("定时刷新数据录到es", userReadLogJobCron,
                    shardingTotalCount, UUID.randomUUID().toString(), userReadLogJob);
            elasticJobHandler.addJob("************到es", userCommentJobCron,
                    shardingTotalCount, UUID.randomUUID().toString(), userCommentJob);
            elasticJobHandler.addJob("************到es", userFabulousJobCron,
                    shardingTotalCount, UUID.randomUUID().toString(), userFabulousJob);
            elasticJobHandler.addJob("************到es", userSituationJobCron,
                    shardingTotalCount, UUID.randomUUID().toString(), userSituationJob);

//            elasticJobHandler.addJob("************", userReadLogDataArchivingJobCron,
//                    shardingTotalCount, UUID.randomUUID().toString(), userReadLogDataArchivingJob);
//            elasticJobHandler.addJob("************", userCommentDataArchivingJobCron,
//                    shardingTotalCount, UUID.randomUUID().toString(), userCommentDataArchivingJob);
//            elasticJobHandler.addJob("************", userFabulousDataArchivingJobCron,
//                    shardingTotalCount, UUID.randomUUID().toString(), userFabulousDataArchivingJob);
//            elasticJobHandler.addJob("************", userSituationDataArchivingJobCron,
//                    shardingTotalCount, UUID.randomUUID().toString(), userSitationDataArchivingJob);
        }
        return null;
    }
}
@Component
@Slf4j
public class UserReadLogJob implements SimpleJob {

    @Autowired
    private UserReadLogEsService userReadLogEsService;
    @Autowired
    private UserOpertionService userOpertionService;


    @Override
    public void execute(ShardingContext shardingContext) {
        log.info("定时任务执行开始--------------------------------");
        try {
            String nowDate = DateUtil.dateFormat(new Date(), DateUtil.DATE_PATTERN);
            String startTime = nowDate + " 00:00:00";
            String endTime = nowDate + " 23:59:59";
            List<String> list = userOpertionService.selectUserReadLogCompanyList(startTime, endTime);
            list.stream().forEach(o -> {
                userReadLogEsService.createIndex(o);
            });
            userReadLogEsService.insertDateToEs(startTime, endTime);
        } catch (ParseException e) {
            log.error("定时任务执行异常"+e.getMessage());
        }
        log.info("定时任务执行结束--------------------------------");
    }
}

 

application.yml配置文件

zookeeper:
  serverlists: 192.168.0.*:2181
  namespace: *-job

elasticJob:
  enable: true
  shardingTotalCount: 1
  userReadLogJobCron: 0 0/1 * * * ?
  userCommentJobCron: 0 0/1 * * * ?
  userFabulousJobCron: 0 0/1 * * * ?
  userSituationJobCron: 0 0/1 * * * ?
  #一个月归一次档
  userReadLogDataArchivingJobCron: 0 0 0 1 * ? *
  userCommentDataArchivingJobCron: 0 0 0 1 * ? *
  userFabulousDataArchivingJobCron: 0 0 0 1 * ? *
  userSituationDataArchivingJobCron: 0 0 0 1 * ? *

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值