Elastic-jobのScriptタイプジョブ実装
2876 ワード
一、前序
elastic-jobについてまだ知らない場合は、私の「elastic-job分散ジョブスケジューリングフレームワークの概要」を見てみることをお勧めします.以下のパラメータ構成については、私の「elastic-jobのSimpleタイプジョブ実装」を参照してください.
二、Scriptタイプ
Scriptタイプジョブとは、スクリプトタイプジョブを意味し、shell、python、perlなどのすべてのタイプのスクリプトをサポートします.scriptCommandLineをコンソールまたはコードで構成するだけで、符号化する必要はありません.実行スクリプトパスにはパラメータが含まれます.パラメータが渡されると、ジョブフレームワークに最後のパラメータがジョブ実行時情報として自動的に追加されます.
三、コード展示
ScriptJobConfigurationの主要パラメータ:
CoreConfig:作業コア構成
scriptCommandLine:スクリプト型ジョブ実行コマンドライン
demo.bat
demo.sh
四、起動
mainメソッドを起動してコンソールログを表示する:コードはサーバにアップロードされました:github:https://github.com/1181888200/boot-elastic-job
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