1. 程式人生 > >Elastic Job 入門教程(二)— Spring Boot框架下是實現Elastic Job 指令碼作業(Script Job)

Elastic Job 入門教程(二)— Spring Boot框架下是實現Elastic Job 指令碼作業(Script Job)

Elastic Job 入門教程(一)— 與Spring Boot整合這篇文章中,我們簡單介紹了Spring Boot與Elastic Job 的整合,並簡單實現了SimpleJob型別作業。本章,我們介紹Spring Boot框架下如何實現Elastic Job的Script Job型別作業。

application.yml中指令碼作業配置

scriptJob:
  cron: 0/5 * * * * ?
  shardingTotalCount: 2
  shardingItemParameters: 0=CIB,1=ICBC
  jobDescription: "elastic script job"
  jobParameter: "hello elastic script job"
  jobName: "elastic script job name"
  scriptCommandLine: "d:/run.bat"

定義Bean獲取指令碼作業屬性

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Configuration
@ConfigurationProperties(prefix = "scriptJob")
public class ElasticScriptJobProperties {
    private String cron;
    private int shardingTotalCount;
    private String shardingItemParameters;
    private String jobDescription;
    private String jobParameter;
    private String jobName;
    private String scriptCommandLine;

}

指令碼作業配置

@Configuration
public class ElasticScriptJobConfig {

    @Autowired
    private ElasticScriptJobProperties elasticScriptJobProperties;

    @Bean
    public LiteJobConfiguration scriptLiteJobConfiguration() {
        JobCoreConfiguration.Builder builder = JobCoreConfiguration.newBuilder(elasticScriptJobProperties.getJobName()
                , elasticScriptJobProperties.getCron()
                , elasticScriptJobProperties.getShardingTotalCount());
        JobCoreConfiguration jobCoreConfiguration = builder
                .shardingItemParameters(elasticScriptJobProperties.getShardingItemParameters())
                .description(elasticScriptJobProperties.getJobDescription())
                .jobParameter(elasticScriptJobProperties.getJobParameter())
                .build();
        ScriptJobConfiguration scriptJobConfiguration = new ScriptJobConfiguration(jobCoreConfiguration
                , elasticScriptJobProperties.getScriptCommandLine());
        return LiteJobConfiguration
                .newBuilder(scriptJobConfiguration)
                .overwrite(true)
                .build();
    }

}

指令碼作業定義

@Component
public class ElasticScriptJob {
    @Autowired
    private ZookeeperRegistryCenter regCenter;

    @Autowired
    private LiteJobConfiguration scriptLiteJobConfiguration;

    @Bean(initMethod = "init")
    public JobScheduler scriptJob() {
        return new JobScheduler(regCenter, scriptLiteJobConfiguration);
    }
}

在這裡插入圖片描述

更多原始碼請參考: