SchedulerX は、Microservices Engine (MSE) の分散型ジョブスケジューリングサービスです。これはサーバー-エージェントアーキテクチャを使用します。SchedulerX サーバーはスケジューリングと調整を処理し、Spring Boot アプリケーションに組み込まれたエージェントがジョブを実行します。アプリケーションを接続した後、SchedulerX コンソールからジョブを定義、スケジュール、モニターできます。
前提条件
開始する前に、以下を確認してください。
Spring Boot 2.x または 3.x プロジェクト
(オプション) リソース分離用の名前空間 -- 「名前空間管理」の「名前空間の作成」セクションをご参照ください。
ステップ 1: SchedulerX アプリケーションの作成
基本設定の構成
MSE SchedulerX コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。[名前空間] を選択し、[アプリケーションの作成] をクリックします。
以下の設定を入力し、[次へ] をクリックします。
重要正しいリージョンと名前空間にリソースを作成します。リソース情報が有効であることを確認してください。
設定 説明 デフォルト アプリケーション名 アプリケーションの分かりやすい名前です。 なし アプリケーション ID エージェントアクセス用の GroupID です。名前空間内で一意である必要があります。アプリケーション名 と同じにすることができます。 なし アプリケーションタイプ 通常アプリ:Kubernetes にデプロイされていない、または Kubernetes ジョブを必要としないアプリケーションです。k8s アプリ:Kubernetes にデプロイされており、Kubernetes ジョブを必要とするアプリケーションです。 通常アプリ エディション ニーズに基づいてエディションを選択します。 Professional Edition Simple Log Service 有効にすると、コンソールでスケジューリングログを表示できます。Log4j または Logback の構成が必要です。 オフ load5 5 分間の最大ロードアベレージです。クライアントマシンの CPU コア数を超えることはできません。 0 メモリ使用率 過去 5 分間の平均メモリ使用率がこのしきい値を超えると、ワーカーはビジーとしてマークされます。 90% ディスク使用率 ディスク使用率がこのしきい値を超えると、クライアントマシンはビジーとしてマークされます。 95% ビジーマシンでのトリガー マシンがビジー状態のときでもジョブのトリガーを続行します。 オン 設定 説明 デフォルト [最大ジョブ数] グループでサポートされる最大ジョブ数。 1000 [自動スケールアウト] 自動スケールを有効にします。 [グローバルジョブ数] が必要です。 Off [トラフィックスロットリング] トラフィックのスロットリングを有効にします。 [タスクインスタンス同時実行数] が必要です。 Off [カレンダー] [金融営業日] (取引日) または [営業日] (稼働日) を使用してスケジュールします。 0 
通知の構成
[通知設定] ページで、[通知チャネル] を選択し、[連絡先] を設定します。連絡先を個別に追加するか、連絡先グループを使用します。連絡先グループを作成するには、「通知連絡先または通知連絡先グループを作成する」をご参照ください。
設定 説明 通知チャネル テキストメッセージ、メール、Webhook、または電話。 メール 連絡先のメールアドレス。 ウェブフック WeCom、Lark、または DingTalk の Webhook URL。複数の URL はコンマ (,) で区切ります。DingTalk の場合、ロボット設定にキーワード "SchedulerX" (大文字と小文字を区別) を追加してください。Webhook の設定詳細については、「Webhook の設定方法」をご参照ください。Webhook URL の取得方法については、「DingTalk 開発者ドキュメント」、「WeCom 開発者ドキュメント」、および「Lark 開発者ドキュメント」をご参照ください。 携帯電話番号 連絡先の電話番号。 
ページを更新し、選択したリージョンと名前空間の下にアプリケーションが表示されることを確認します。
ステップ 2: SchedulerX 依存関係の追加
Spring Boot プロジェクトの pom.xml ファイルに schedulerx2-spring-boot-starter 依存関係を追加します。
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.11.5</version> <!-- Replace with the latest version -->
</dependency>バージョンを最新のエージェントバージョンに置き換えます。バージョン履歴については、「エージェントリリースノート」をご参照ください。
プロジェクトが Logback を使用している場合は、バンドルされた Log4j 依存関係を除外します。
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.11.5</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>ステップ 3: 接続パラメーターの構成
application.properties に次のプロパティを追加します。
# Required: SchedulerX connection settings
spring.schedulerx2.endpoint=${endpoint}
spring.schedulerx2.namespace=${namespace}
spring.schedulerx2.groupId=${groupId}
# The appKey parameter is supported only in versions 1.2.1 and later.
spring.schedulerx2.appKey=${appKey}
# If you do not use an appKey, you can use an Alibaba Cloud AccessKey and SecretKey, or an STS token.
#spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
#spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
#spring.schedulerx2.stsToken=${aliyunStsToken}パラメーターソース:
SchedulerX コンソールにログインします。SchedulerX コンソールの左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。管理するアプリケーションを見つけ、[操作] 列の [AccessConfig] をクリックします。[AccessConfig] パネルで、ドロップダウンから [Spring Boot] を選択します。

パラメーターの説明:
endpoint: SchedulerxWorker のエンドポイント。値は、アプリケーションがデプロイされているリージョンのエンドポイントと一致する必要があります。詳細については、「エンドポイント」をご参照ください。
名前空間: アプリケーションが属する名前空間の ID です。この名前空間 ID は、SchedulerX コンソールの [名前空間] ページで確認できます。

groupId と appKey は、アプリケーションの ID とキーです。 値は、SchedulerX コンソールの [アプリケーション] ページで確認できます。

aliyunAccessKey および aliyunSecretKey: お客様の Alibaba Cloud アカウントの AccessKey ID および AccessKey Secret です。AccessKey ペアは、User Management コンソール の [セキュリティ管理] ページで確認できます。
SchedulerX とエージェントは同じリージョンにある必要があります。リージョンが一致しないと接続失敗の原因となります。アプリケーションが Alibaba Cloud の外部 (オンプレミスまたは別のクラウドプロバイダー) で実行される場合、インターネットアクセスを有効にし、インターネットリージョンに SchedulerX アプリケーションを作成します。「インターネット経由での接続」をご参照ください。
アプリケーションが YAML を使用している場合は、代わりにこれらの設定を application.yml に追加します。
spring:
schedulerx2:
endpoint: ${endpoint}
namespace: ${namespace}
groupId: ${groupId}
appKey: ${appKey}単一のクライアントから複数のアプリケーションを管理するには、アプリケーション ID をコンマで区切ります: spring.schedulerx2.groupId=animals.dog,animals.cat。各アプリケーションは権限管理のために隔離されており、個別のワーカーは必要ありません。
オプションパラメーター
次のパラメーターは、高度なユースケースをサポートします。
| パラメーター | 説明 | デフォルト | 以降 |
|---|---|---|---|
spring.schedulerx2.enabled | SchedulerX スターターを有効または無効にします。 | true | 0.1.7 |
spring.schedulerx2.host | マシンに複数の NIC がある場合、または VPN を使用している場合に IP アドレスを指定します。 | 自動検出 | 0.1.7 |
spring.schedulerx2.port | エージェントがリッスンするポート。 | ランダムな利用可能なポート | 0.1.7 |
spring.schedulerx2.blockAppStart | SchedulerX の初期化に失敗した場合、アプリケーションの起動をブロックします。 | true | 1.1.0 |
spring.schedulerx2.shareContainerPool | エージェント上のすべてのジョブが 1 つのスレッドプールを共有できるようにします。 | false | 1.2.1.2 |
spring.schedulerx2.sharePoolSize | 共有が有効になっている場合のスレッドプールサイズ。 | 64 | 1.2.1.2 |
spring.schedulerx2.label | カナリアリリースまたはストレステスト中に特定のワーカーをターゲットにするためのラベル。 | なし | 1.2.2.2 |
spring.schedulerx2.enableCgroupMetrics | cgroup を使用してエージェントメトリックを収集します。Kubernetes 環境で手動で有効にします。 | false | 1.2.2.2 |
spring.schedulerx2.cgroupPathPrefix | コンテナ内の cgroup パス。 | /sys/fs/cgroup/cpu/ | 1.2.2.2 |
spring.schedulerx2.enableHeartbeatLog | ハートビートデータを ${user.home}/logs/schedulerx/heartbeat.log にログ記録します。 | true | 1.2.4 |
spring.schedulerx2.mapMasterStatusCheckInterval | マップモデルでタスク完了をチェックする間隔 (ミリ秒)。値が低いほど、秒単位の粒度のジョブのスケジューリング周波数が増加します。 | 3000 | 1.2.5.2 |
spring.schedulerx2.enableSecondDelayCycleIntervalMs | 秒単位ではなくミリ秒単位で秒単位の粒度のジョブ間隔を解釈します。 | false | 1.2.5.2 |
spring.schedulerx2.broadcastMasterExecEnable | プライマリノードがブロードキャストジョブを実行することを要求します。 | true | 1.8.13 |
spring.schedulerx2.broadcastDispatchRetryTimes | ブロードキャストディスパッチが失敗した後の最大再試行回数。再試行間隔は 2 秒に固定されています。 | 3 | 1.8.13 |
spring.schedulerx2.enableSecondDelayStandaloneDispatch | 秒単位の粒度のスタンドアロンジョブのディスパッチを有効にします。 | false | 1.8.13 |
ステップ 4: ジョブプロセッサの作成
JavaProcessor を拡張するクラスを作成して、ジョブロジックを定義します。次の例は、各実行でメッセージを出力します。
package com.aliyun.schedulerx.test.job;
import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import com.alibaba.schedulerx.worker.processor.ProcessResult;
import org.springframework.stereotype.Component;
@Component
public class MyHelloJob extends JavaProcessor {
@Override
public ProcessResult process(JobContext context) throws Exception {
System.out.println("hello schedulerx2.0");
return new ProcessResult(true); // Return true to indicate success
}
}@Componentは、SchedulerX がそれを検出できるように、クラスを Spring Bean として登録します。JavaProcessorを拡張し、processをオーバーライドしてジョブロジックを定義します。成功の場合は
new ProcessResult(true)を返し、失敗の場合はnew ProcessResult(false)を返します。
ステップ 5: 接続の検証
Spring Boot アプリケーションを起動します。
「MSE SchedulerX コンソール」にログインします。左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
アプリケーションを見つけ、[インスタンスの表示] を [操作] 列でクリックします。

[インスタンスの総数] 列を確認します:
0: 接続に失敗しました。構成パラメーター (リージョン、エンドポイント、名前空間、および GroupID) を確認し、ネットワーク接続を検証してください。
0 より大きい: 接続に成功しました。
次のステップ
接続が検証された後、SchedulerX コンソールでジョブを作成してジョブプロセッサをトリガーします。「ジョブ管理」の「ジョブの作成」セクションをご参照ください。
トラブルシューティング
| 現象 | 考えられる原因 | 解決策 |
|---|---|---|
| エージェントの接続に失敗します (インスタンス数 0) | SchedulerX とエージェント間のリージョン不一致 | 両方が同じリージョンを使用していることを確認します。endpoint の値を「エンドポイント」と照合して確認してください。 |
| エージェントの接続に失敗します (インスタンス数 0) | インターネットエンドポイントなしで Alibaba Cloud の外部でアプリケーションが実行されます | インターネットアクセスを有効にし、インターネットリージョンに SchedulerX アプリケーションを作成します。「インターネット経由での接続」をご参照ください。 |
| エージェントの接続に失敗します (インスタンス数 0) | GroupID または AppKey が正しくありません | コンソールで[アプリケーション] > [AccessConfig]を開き、値を確認します。 |
| アプリケーションの起動がブロックされました | SchedulerX が blockAppStart=true (デフォルト) で初期化に失敗しました | spring.schedulerx2.blockAppStart=false を設定して、SchedulerX なしでアプリケーションを起動できるようにするか、まず接続の問題を修正してください。 |
関連ドキュメント
「エージェントの SchedulerX への接続」 -- その他の接続方法 (Spring Boot 以外)