Elastic-jobのScriptタイプジョブ実装

2876 ワード

一、前序
elastic-jobについてまだ知らない場合は、私の「elastic-job分散ジョブスケジューリングフレームワークの概要」を見てみることをお勧めします.以下のパラメータ構成については、私の「elastic-jobのSimpleタイプジョブ実装」を参照してください.
二、Scriptタイプ
Scriptタイプジョブとは、スクリプトタイプジョブを意味し、shell、python、perlなどのすべてのタイプのスクリプトをサポートします.scriptCommandLineをコンソールまたはコードで構成するだけで、符号化する必要はありません.実行スクリプトパスにはパラメータが含まれます.パラメータが渡されると、ジョブフレームワークに最後のパラメータがジョブ実行時情報として自動的に追加されます.
三、コード展示
package com.lwl.boot.job.script;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermissions;

import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.script.ScriptJobConfiguration;
import com.dangdang.ddframe.job.lite.api.JobScheduler;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;

public class ApiJobScript {

	public static void main(String[] args) throws IOException {
		new JobScheduler(registryCenter(),configuration()).init();
	}

	
	private static CoordinatorRegistryCenter registryCenter() {
		//  zookeeper
		CoordinatorRegistryCenter registryCenter = 
					new ZookeeperRegistryCenter(new ZookeeperConfiguration("localhost:2181", "elastic-job-demo"));
		registryCenter.init();
		return registryCenter;
	}

	
	private static LiteJobConfiguration configuration() throws IOException {
		 //         
		JobCoreConfiguration coreConfig = JobCoreConfiguration.newBuilder("scriptElasticJob", "0/5 * * * * ?", 3).build();
        ScriptJobConfiguration scriptJobConfig = new ScriptJobConfiguration(coreConfig, buildScriptCommandLine());
		
		LiteJobConfiguration config = LiteJobConfiguration.newBuilder(scriptJobConfig).build();
		
		return config;
	}


	private static String buildScriptCommandLine() throws IOException {
		//      
	   if (System.getProperties().getProperty("os.name").contains("Windows")) {
            return Paths.get(ApiJobScript.class.getResource("/script/demo.bat").getPath().substring(1)).toString();
        }
        Path result = Paths.get(ApiJobScript.class.getResource("/script/demo.sh").getPath());
        Files.setPosixFilePermissions(result, PosixFilePermissions.fromString("rwxr-xr-x"));
        return result.toString();
	}
	
}

ScriptJobConfigurationの主要パラメータ:
CoreConfig:作業コア構成
scriptCommandLine:スクリプト型ジョブ実行コマンドライン
demo.bat
@echo Sharding Context: %*

demo.sh
#!/bin/bash
echo Sharding Context: $*

四、起動
mainメソッドを起動してコンソールログを表示する:コードはサーバにアップロードされました:github:https://github.com/1181888200/boot-elastic-job