Spring Boot アプリケーションで、定期的なデータ同期、定期的なクリーンアップ、時間指定通知などの分散タスクスケジューリングが必要な場合、SchedulerX は、スケジューリングインフラストラクチャを構築することなく、一元的なスケジューリング、実行モニタリング、および障害アラート機能を提供します。このガイドを完了すると、アプリケーションは SchedulerX ワーカーとして登録され、接続されたインスタンス数が MSE コンソールに表示されます。
事前準備
以下を確認してください。
Maven が構成された Spring Boot 2.x または 3.x プロジェクト
(オプション) リソースとサービスを環境間で分離するために、MSE コンソールで作成された名前空間。詳細については、「名前空間の作成」をご参照ください。
ワークフローの概要
MSE コンソールで SchedulerX アプリケーションを作成し、接続パラメーター (エンドポイント、名前空間、GroupID、および AppKey) を取得します。
依存関係を追加し、接続パラメーターとジョブプロセッサクラスを使用して Spring Boot プロジェクトを構成します。
コンソールでインスタンス数を確認して接続を検証します。
ステップ 1: SchedulerX アプリケーションの作成
1.1 基本設定の構成
MSE SchedulerX コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションペインで[アプリケーション管理]をクリックし、[名前空間]を選択して、[アプリケーションの作成]をクリックします。
[アプリケーション名] および [アプリケーションID] を入力し、[アプリケーションタイプ] を選択して、高度な設定を構成します。その後、[次へ] をクリックします。

選択したリージョンと名前空間にリソースが作成され、リソース情報が有効であることを確認してください。
次の表は、各フィールドについて説明しています。
| フィールド | 説明 | デフォルト |
|---|---|---|
| Application Name | アプリケーションのカスタム名です。 | なし |
| Application ID | クライアントアクセス用の GroupID です。名前空間内で一意である必要があります。Application Name と同じ値にすることもできます。 | なし |
| Application Type | Regular App:Kubernetes 上にデプロイされず、Kubernetes ジョブを使用しません。k8s App:Kubernetes 上にデプロイされ、Kubernetes ジョブを使用します。 | Regular App |
| Edition | 要件に基づいてエディションを選択します。 | Professional Edition |
| Simple Log Service | コンソールでスケジューリングログ(分散ジョブログを含む)を表示します。アプリケーション内に Log4j または Logback の構成が必要です。 | Off |
| load5 | 5 分間のロード平均のしきい値です。クライアントマシンの CPU コア数を超えることはできません。 | 0 |
| Memory Usage | 過去 5 分間の平均メモリ使用率がこのしきい値を超える場合、ワーカーはビジー状態とみなされます。 | 90% |
| Disk Usage | ディスク使用率がこのしきい値を超える場合、クライアントマシンはビジー状態とみなされます。 | 95% |
| Trigger Busy Machine | マシンがビジー状態の場合でもジョブ実行をトリガーし続けるかどうかを指定します。 | On |
[高度な設定] を展開して、追加の設定にアクセスします。
| フィールド | 説明 | デフォルト値 |
|---|---|---|
| ジョブの最大数 | グループでサポートされるジョブの最大数です。 | 1000 |
| 自動スケールアウト | リソースを自動的にスケールアウトします。グローバルジョブ数 の設定が必要です。 | 無効 |
| トラフィック制御 | 過負荷を防ぐためトラフィックを制御します。タスクインスタンス同時実行数 の設定が必要です。 | 無効 |
| カレンダー | 金融営業日(金融業務における取引日)または 平日(標準的な就業日)に基づくスケジュール設定です。 | 0 |
1.2 通知の構成
[通知設定] ページで、[通知チャネル] を選択し、[連絡先] を設定します。サポートされている通知チャネルは、[テキストメッセージ]、[E メール]、[Webhook]、[電話] です。Webhook の設定詳細については、「Webhook 設定の説明」をご参照ください。
通知受信者を追加します。次の表は、各連絡先フィールドについて説明しています。
連絡先グループ: すべてのメンバーが通知を受信します。グループを作成するには、「通知連絡先または通知連絡先グループを作成する」をご参照ください。
連絡先: 個々の受信者を追加します。[連絡先の追加] をクリックし、次に [連絡先を作成] をクリックして、連絡先の詳細を入力します。
[フィールド] [説明] 通知チャネル サポートされているチャンネル: テキストメッセージ、メール、Webhook、および電話。 E メール 連絡先の E メールアドレス。 Webhook WeCom、Lark、または DingTalk の Webhook URL。複数の URL はコンマ (,) で区切ります。DingTalk の場合、ロボット構成に大文字と小文字を区別するキーワード「SchedulerX」を追加します。詳細については、「DingTalk 開発者ドキュメント」、「WeCom 開発者ドキュメント」、および「Lark 開発者ドキュメント」をご参照ください。 携帯電話番号 連絡先の携帯電話番号。 

通知の構成が完了したら、[アプリケーション管理] ページをリフレッシュし、選択したリージョンと名前空間配下のリストに新しいアプリケーションが表示されることを確認します。
ステップ 2: Spring Boot アプリケーションの接続
2.1 Maven 依存関係の追加
schedulerx2-spring-boot-starter 依存関係を pom.xml に追加します。
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.11.5</version> <!-- 最新バージョンに置き換えてください -->
<!-- Logback を使用する場合は Log4j を除外してください -->
<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>1.11.5 を最新のクライアントバージョンに置き換えてください。バージョン情報については、「クライアントバージョンのリリースノート」をご参照ください。
2.2 接続パラメーターの構成
次のプロパティを application.properties ファイルに追加します。SchedulerxWorker を SchedulerX に接続するには、4 つのパラメーターが必須です。
# --- Required ---
spring.schedulerx2.endpoint=<your-endpoint> # Regional endpoint (see table below)
spring.schedulerx2.namespace=<your-namespace-id> # Namespace UID from the Namespaces page
spring.schedulerx2.groupId=<your-group-id> # Application ID from Application Management
spring.schedulerx2.appKey=<your-app-key> # Application key (agent 1.2.1+)
# --- Alternative authentication (if not using appKey) ---
# spring.schedulerx2.aliyunAccessKey=<your-access-key-id>
# spring.schedulerx2.aliyunSecretKey=<your-access-key-secret>
# spring.schedulerx2.stsToken=<your-sts-token>プレースホルダーを実際の値に置き換えてください。
| [プレースホルダー] | [説明] | 入手先 |
|---|---|---|
<your-endpoint> | SchedulerX のリージョナルエンドポイント。 | エンドポイントリスト |
<your-namespace-id> | 名前空間 UID。 | [名前空間] ページ |
<your-group-id> | アプリケーション ID (GroupID)。 | アプリケーション管理コンソールの ページ |
<your-app-key> | アプリケーションキー。 | アプリケーション管理コンソールの ページ |
接続パラメーターをすばやく見つけるには、[アプリケーション管理] ページに移動し、アプリケーションの[操作] 列にある[アクセス設定] をクリックし、次に[Spring Boot] を選択します。

SchedulerX リージョンとエージェントリージョンは一致する必要があります。そうでない場合、エージェントは接続できません。
アプリケーションが Alibaba Cloud 以外のサーバーまたはオンプレミス環境で実行されている場合は、インターネットアクセスを有効にし、インターネットリージョンに SchedulerX アプリケーションを作成してください。詳細については、「オンプレミス環境からインターネット経由で SchedulerX に接続」をご参照ください。
単一クライアント内で複数のアプリケーショングループを管理するには、コンマ区切りの GroupID を使用します: spring.schedulerx2.groupId=animals.dog,animals.cat。各グループはコンソールで個別に作成しますが、同じクライアントインスタンスを共有します。
2.3 ジョブプロセッサの作成
定期タスクを処理するためには、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); // 成功を示すために true を返します。
}
}ステップ 3: 接続の検証
Spring Boot アプリケーションを起動します。
MSE SchedulerX コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。正しいリージョンと名前空間を選択します。
アプリケーションの[合計インスタンス数]列を確認してください。
総インスタンス数 > 0: アプリケーションが正常に接続されたことを意味します。この数値は、接続されているワーカーインスタンスの数を表します。
[合計インスタンス数 = 0]:接続に失敗しました。構成パラメーターとネットワーク接続を確認してください。

次のステップ
接続が成功したら、SchedulerX コンソールで定期タスクを作成します。詳細については、「スケジューリングタスクの作成」をご参照ください。
構成リファレンス
すべての spring.schedulerx2.* プロパティを以下に示します。endpoint、namespace、groupId、および appKey のみが必須です。
| [プロパティ] | [説明] | [デフォルト] | [バージョン] |
|---|---|---|---|
spring.schedulerx2.enabled | SchedulerX 2.0 スターターを有効または無効にします。 | true | 0.1.7 |
spring.schedulerx2.endpoint | リージョナルエンドポイント。「エンドポイントリスト」をご参照ください。 | 該当なし | 0.1.7 |
spring.schedulerx2.namespace | 名前空間 ページからの名前空間 UID。 | なし | 0.1.7 |
spring.schedulerx2.groupId | アプリケーション管理 ページからのアプリケーション ID。 | 該当なし | 0.1.7 |
spring.schedulerx2.appKey | [アプリケーション管理] ページからのアプリケーションキー。 | 該当なし | 1.2.1 |
spring.schedulerx2.host | 複数の IP が存在する場合 (VPN、複数の NIC) の実際の IP アドレス。 | 該当なし | 0.1.7 |
spring.schedulerx2.port | クライアントリスナーのカスタムポート。設定されていない場合は、ランダムな利用可能なポートが使用されます。 | なし | 0.1.7 |
spring.schedulerx2.blockAppStart | SchedulerX の初期化に失敗した場合にアプリケーションの起動をブロックします。 | true | 1.1.0 |
spring.schedulerx2.shareContainerPool | クライアント上のすべてのタスク実行でスレッドプールを共有します。 | false | 1.2.1.2 |
spring.schedulerx2.sharePoolSize | shareContainerPool が有効な場合のスレッドプールサイズ。 | 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 | Map モデルですべてのサブタスクが完了しているかを確認する間隔 (ミリ秒)。値が小さいほど、秒単位のジョブのスケジューリング頻度が増加します。 | 3000 | 1.2.5.2 |
spring.schedulerx2.enableSecondDelayCycleIntervalMs | second_delay レイテンシーを秒ではなくミリ秒で解釈し、スケジューリング頻度を増加させます。 | 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 |
よくある質問
アラート処理については、「アラートに関するよくある質問」をご参照ください。
Spring ジョブ統合の問題については、「Spring ジョブの問題」をご参照ください。
権限と接続のトラブルシューティングについては、「権限に関するよくある質問」および「接続に関するよくある質問」をご参照ください。
関連トピック
その他のクライアント接続方法については、「クライアントを SchedulerX に迅速に接続」をご参照ください。