このトピックでは、Spring Boot アプリケーションを SchedulerX に接続する方法について説明します。SchedulerX アプリケーションの作成、必要な接続パラメーターの設定、Spring Boot プロジェクト内でのエージェントの設定、接続の検証などについて説明します。これにより、Spring Boot アプリケーションが SchedulerX で期待どおりに動作し、ジョブの自動スケジューリングと正確な管理が実装されるようになります。
前提条件
オプション。ネームスペースが作成されていること。Spring Boot アプリケーションで高いセキュリティが必要な場合は、ネームスペースを作成して、アプリケーションのリソースとサービスを他のアプリケーションから分離できます。詳細については、「ネームスペース管理」トピックの「ネームスペースの作成」セクションをご参照ください。Namespace management
Spring Boot プロジェクトが作成されていること。
概要
Spring Boot アプリケーションを SchedulerX に接続するには、次の手順を実行します。
SchedulerX アプリケーションの作成: SchedulerX でアプリケーションを作成し、SchedulerX への接続パラメーターを取得し、ジョブの一元管理と設定を実装します。
エージェントを使用して Spring Boot アプリケーションを SchedulerX に接続する: Spring Boot プロジェクトの .properties ファイルまたは .yml ファイルで、SchedulerxWorker に必要なパラメーターを設定し、JobProcessor クラスを作成して、Spring Boot アプリケーションを指定された SchedulerX アプリケーションに接続します。
結果の検証: Spring Boot アプリケーションが SchedulerX に接続され、期待どおりに動作することを確認します。
ステップ 1: SchedulerX アプリケーションを作成する
1.1 基本設定
SchedulerX コンソール にログインし、リージョンを選択します。
左側のナビゲーションペインで、[アプリケーション] をクリックします。[名前空間] を選択し、[アプリケーションの作成] をクリックします。[アプリケーションの作成] パネルで、[アプリケーション名] パラメーターと [アプリケーション ID] パラメーターを指定し、[アプリの種類] の値を選択し、ビジネス要件に基づいて [詳細設定] で設定を構成し、[次のステップ] をクリックします。
重要選択したリージョンと名前空間でリソースが作成され、リソース情報が有効であることを確認してください。
パラメーター
説明
デフォルト値
アプリケーション名
アプリケーションの名前を指定します。
なし
アプリケーションID
アプリケーションの ID を指定します。アプリケーションの ID は、アプリケーションが SchedulerX に接続された後のジョブグループの ID でもあります。アプリケーション ID が名前空間内で一意であることを確認してください。一意でない場合、アプリケーションの作成に失敗します。アプリケーション名 パラメーターの値をアプリケーション ID として使用できます。
なし
アプリタイプ
汎用アプリ: Kubernetes クラスターにアプリケーションをデプロイしたくない場合、または Kubernetes ジョブが不要な場合に、このオプションを選択します。
k8s アプリ: Kubernetes クラスターにアプリケーションをデプロイし、Kubernetes ジョブが必要な場合に、このオプションを選択します。
汎用アプリ
リリース
ビジネス要件に基づいてエディションを選択します。
プロフェッショナル版
リモートログサーバー
この機能を有効にする場合は、Log4j または Logback 設定を追加します。その後、トラブルシューティングのために、分散ジョブを含むジョブのスケジューリングログをコンソールで表示できます。
オフ
load5
値は、クライアントマシンで使用可能な CPU コア数を超えることはできません。
0
メモリ使用量
過去 5 分間の平均メモリ使用量が、このパラメーターで指定されたしきい値を超えると、ワーカーはビジー状態と見なされます。
90%
ディスク使用量
ディスク使用量が、このパラメーターで指定されたしきい値を超えると、クライアントマシンはビジー状態と見なされます。
95%
ビジー状態のマシンをトリガーするかどうか
マシンがビジー状態のときにジョブの実行をトリガーし続けるかどうかを指定します。
オン
詳細設定
タスクの最大数
グループでサポートされるジョブの最大数を指定します。
1000
自動拡張
自動スケールアウトを有効にするかどうかを指定します。この機能を有効にする場合は、グローバルタスクの数 パラメーターを指定する必要があります。
オフ
フロー制御
トラフィック調整を有効にするかどうかを指定します。このスイッチをオンにする場合は、同時タスクインスタンスの数 パラメーターを指定する必要があります。
オフ
カレンダ
このパラメーターを [カレンダーを指定] に設定すると、ドロップダウンリストから 営業日 または 稼働日 を選択できます。
営業日: 金融ビジネスの取引日。
稼働日: 社会、組織、または個人の通常の仕事または業務の日。
0
1.2 通知設定
[通知設定] ステップで、[通知チャネル] パラメーターと [通知連絡先] パラメーターを指定します。
[通知チャネル] には、[SMS]、[メール]、[webhook]、または [電話] を選択します。
[webhook] の設定方法の詳細については、「アプリケーション管理」トピックのwebhook の設定セクションをご参照ください。
[通知連絡先] には、連絡先グループまたは連絡先を選択します。
連絡先グループ
連絡先グループのすべての連絡先は通知を受信できます。連絡先グループの作成方法の詳細については、「通知連絡先と通知連絡先グループ」トピックの通知連絡先と通知連絡先グループの作成セクションをご参照ください。
連絡先
追加された連絡先は通知を受信できます。一度に複数の連絡先を追加できます。連絡先を作成していない場合は、[連絡先の追加] をクリックし、ドロップダウンリストから [連絡先を作成するには移動] をクリックします。
表示されるページで、[新しい連絡先] をクリックし、連絡先情報を指定します。
パラメーター
説明
通知チャネル
有効な値: [SMS]、[メール]、[webhook]、[電話]。
メール
連絡先のメールアドレスを入力します。
webhook
使用する webhook URL を入力します。WeCom、Lark、DingTalk がサポートされています。一度に複数の webhook ロボットを指定することもできます。複数のロボットリンクはコンマ (,) で区切ります。
DingTalk チャットボットを使用する場合は、キーワード SchedulerX (大文字と小文字は区別されます) を追加する必要があります。そうでない場合、アラート情報は受信できません。
webhook の取得方法の詳細については、DingTalk 開発ドキュメント、WeCom 開発ドキュメント、Lark 開発ドキュメント をご参照ください。
携帯電話番号
連絡先の携帯電話番号を入力します。
情報を確認します。
ページを更新し、指定したリージョンとネームスペースを選択します。次に、作成されたアプリケーションに関する情報を表示します。
ステップ 2: エージェントを使用して Spring Boot アプリケーションを SchedulerX に接続する
必要な依存関係を pom.xml ファイルに追加します。
必要な SchedulerxWorker 依存関係を Spring Boot アプリケーションの pom.xml ファイルに追加して、Spring Boot アプリケーションが SchedulerX が提供する機能を使用できるようにします。
説明SchedulerX は、Spring Boot 2.x および 3.x アプリケーションをサポートしています。
<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-spring-boot-starter</artifactId> <version>${schedulerx2.version}</version> <!-- Logback を使用する場合は、Log4j と Log4j 2 を除外する必要があります。 --> <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>
重要<version>${schedulerx2.version}</version> を最新のエージェントバージョンに置き換えます。例: <version>1.11.5</version>。詳細については、エージェントリリースノート をご参照ください。
パラメーターを設定します。
Spring Boot アプリケーションの application.properties 設定ファイルに、接続情報や認証情報など、SchedulerxWorker に必要なパラメーターを追加します。これらのパラメーターは、Spring Boot アプリケーションが SchedulerX アプリケーションに接続するために必要です。
spring.schedulerx2.endpoint=${endpoint} spring.schedulerx2.namespace=${namespace} spring.schedulerx2.groupId=${groupId} # エージェントのバージョンが 1.2.1 以後の場合は、アプリケーションキーを指定する必要があります。 spring.schedulerx2.appKey=${appKey} # エージェントのバージョンが 1.2.1 より前の場合は、アクセスキー ID とアクセスキーシークレットを指定する必要があります。ジョブの同期や設定ファイルでの Spring ジョブの自動同期の定義など、その他の特別な設定を有効にするには、次のパラメーターを設定する必要があります。 #spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey} #spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
パラメーターソース:
SchedulerX コンソール にログインします。左側のナビゲーションペインで、[アプリケーション] をクリックします。「アプリケーション」ページで、管理するアプリケーションを見つけ、操作列の [accessconfig] をクリックします。AccessConfig パネルで、ドロップダウンリストから Spring Boot を選択します。
重要SchedulerX とエージェントが同じリージョンにあるかどうかを確認します。そうでない場合、エージェントは SchedulerX に接続できません。
Spring Boot アプリケーションが Alibaba Cloud 以外のサーバーまたはオンプレミス環境で実行されている場合は、Spring Boot アプリケーションへのインターネットアクセスを有効にし、インターネットリージョンに SchedulerX アプリケーションを作成していることを確認してください。詳細については、オンプレミス環境からインターネット経由で SchedulerX に接続する をご参照ください。
説明Spring Boot アプリケーションに複数のサービスモジュールが含まれている場合、または権限管理のために CRON ジョブを分離する場合は、SchedulerX コンソールで複数のアプリケーションを作成して、CRON ジョブのきめ細かい管理を実装できます。たとえば、SchedulerX コンソールでアプリケーション
animals
用にアプリケーション animals.dog と animals.cat が作成されます。この場合、2 つのアプリケーションのワーカーを個別に申請する必要はありません。代わりに、application.properties 設定ファイルでspring.schedulerx2.groupId=${groupId}
を指定するだけです。${groupId} をアプリケーション名に置き換えます。複数のアプリケーション名はコンマ (,) で区切ります。例:spring.schedulerx2.groupId=animals.dog,animals.cat
。パラメーターの説明:
endpoint: SchedulerxWorker のエンドポイント。このパラメーターの値は、アプリケーションがデプロイされているリージョンのエンドポイントと一致する必要があります。詳細については、エンドポイント をご参照ください。
namespace: アプリケーションが属するネームスペースの ID。ネームスペース ID は、SchedulerX コンソールの [ネームスペース] ページで確認できます。
groupId と appKey: アプリケーションの ID とキー。値は、SchedulerX コンソールの [アプリケーション] ページで確認できます。
aliyunAccessKey と aliyunSecretKey: Alibaba Cloud アカウントのアクセスキー ID とアクセスキーシークレット。ユーザー管理 コンソールの [セキュリティ管理] ページでアクセスキーペアを確認できます。
次の表では、ビジネス要件に基づいて設定できるパラメーターについて説明します。
パラメーター
説明
値
初期バージョン
spring.schedulerx2.enabled
SchedulerX 2.0 のスターターを有効にするかどうかを指定します。デフォルト値: true。このパラメーターを設定する必要はありません。
true
false
0.1.7
spring.schedulerx2.endpoint
指定したリージョンのエンドポイント。詳細については、エンドポイント をご参照ください。
該当なし
0.1.7
spring.schedulerx2.namespace
ネームスペースの UID。ネームスペース UID は、SchedulerX コンソールの [ネームスペース] ページで確認できます。
該当なし
0.1.7
spring.schedulerx2.groupId
アプリケーションの ID。アプリケーション ID は、SchedulerX コンソールの [アプリケーション] ページで確認できます。
該当なし
0.1.7
spring.schedulerx2.appKey
アプリケーションのキー。アプリケーションキーは、SchedulerX コンソールの [アプリケーション] ページで確認できます。
該当なし
1.2.1
spring.schedulerx2.host
複数の IP アドレスが存在する場合の実際の IP アドレス。エージェントが VPN または複数のネットワークインターフェースカード (NIC) を使用している場合、複数の IP アドレスが存在する可能性があります。
該当なし
0.1.7
spring.schedulerx2.port
エージェントがリッスンするポート。ポートを指定しない場合、システムは使用可能なポートをランダムに選択します。
該当なし
0.1.7
spring.schedulerx2.blockAppStart
SchedulerX が初期化を完了できなかった場合にアプリケーションの起動をブロックするかどうかを指定します。デフォルト値: true。
true
false
1.1.0
spring.schedulerx2.shareContainerPool
エージェントのすべてのジョブがスレッドプールを共有できるようにするかどうかを指定します。デフォルト値: false。
true
false
1.2.1.2
spring.schedulerx2.sharePoolSize
すべてのジョブがプールを共有できるようにする場合のスレッドプールのサイズ。デフォルト値: 64。
該当なし
1.2.1.2
spring.schedulerx2.label
ラベル。エージェントにラベルを追加して、ラベルを使用してジョブ管理のワーカーを指定できます。この機能は、カナリアリリースとストレステストのシナリオに適しています。
該当なし
1.2.2.2
spring.schedulerx2.enableCgroupMetrics
cgroup を使用してエージェントのメトリックを収集するかどうかを指定します。デフォルト値: false。Kubernetes 環境では、この機能を手動で有効にする必要があります。
true
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。
true
false
1.2.4
spring.schedulerx2.mapMasterStatusCheckInterval
SchedulerX が Map モデルですべてのタスクが完了したかどうかを確認する間隔。単位: ミリ秒。秒単位のジョブのスケジューリング頻度を増やしたい場合は、このパラメーターを設定します。
3000
1.2.5.2
spring.schedulerx2.enableSecondDelayCycleIntervalMs
秒単位のジョブにミリ秒単位の精度を有効にするかどうかを指定します。デフォルト値: false。このパラメーターを true に設定すると、コンソールで秒単位のジョブに指定されたスケジューリング間隔は、秒ではなくミリ秒で解釈されます。これにより、ジョブのスケジューリング頻度が増加します。
true
false
1.2.5.2
spring.schedulerx2.broadcastMasterExecEnable
プライマリノードでブロードキャストジョブを実行する必要があるかどうかを指定します。デフォルト値: true。
true
false
1.8.13
spring.schedulerx2.broadcastDispatchRetryTimes
ブロードキャストが失敗した後の最大再試行回数。デフォルトでは、再試行は実行されません。再試行間隔は 2 秒に固定されています。
3
1.8.13
spring.schedulerx2.enableSecondDelayStandaloneDispatch
秒単位のスタンドアロンジョブのディスパッチを有効にするかどうかを指定します。デフォルト値: false。
true
false
1.8.13
JobProcessor クラスを作成する
Spring Boot アプリケーションで JobProcessor クラスを作成して、ジョブスケジューリングを有効にします。
次のサンプルコードは、単純な JobProcessor クラスをスケジュールしてメッセージを定期的に表示する方法を示しています。この例では、
hello schedulerx2.0
というメッセージが表示されます。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; @Component public class MyHelloJob extends JavaProcessor { @Override public ProcessResult process(JobContext context) throws Exception { System.out.println("hello schedulerx2.0"); // SchedulerX 2.0 の挨拶メッセージを表示 return new ProcessResult(true); } }
ステップ 3: 結果を確認する
マイクロサービスエンジン (MSE) コンソールにログインします。左側のナビゲーションペインで、[タスクスケジューリング] > [SchedulerX バージョン] を選択します。[SchedulerX バージョン] ページで、左側のペインの [アプリケーション] をクリックします。次に、管理するアプリケーションを見つけ、操作列の [インスタンスの表示] をクリックします。
[インスタンスの総数] 列に 0 が表示されている場合、アプリケーションは SchedulerX に接続できません。オンプレミスアプリケーションを確認して変更します。
[インスタンスの総数] 列に 0 以外の整数が表示されている場合、アプリケーションは SchedulerX に接続されています。
次のステップ
Spring Boot アプリケーションを SchedulerX に接続した後、SchedulerX コンソールでジョブを作成できます。詳細については、「ジョブ管理」トピックの「ジョブの作成」セクションをご参照ください。Job management
FAQ
SchedulerX の使用時にアラートを処理する方法の詳細については、アラートに関する FAQ をご参照ください。
Spring ジョブを SchedulerX に接続する方法の詳細については、Spring ジョブに関する FAQ をご参照ください。
SchedulerX の権限と接続の問題の詳細については、権限に関する FAQ と 接続に関する FAQ をご参照ください。
参考資料
エージェントを使用してアプリケーションを SchedulerX に接続するその他の方法の詳細については、SchedulerX にエージェントを接続する をご参照ください。