このトピックでは、セルフマネージド XXL-JOB から Alibaba Cloud XXL-JOB にジョブを移行する方法について説明します。コードを変更することなく、ジョブの再デプロイを完了できます。これにより、効率的なジョブのスケジューリングと管理が実現します。
ソリューションの概要
Alibaba Cloud が提供するエクスポートツールを使用して、オープンソースの XXL-JOB システムからジョブ構成をエクスポートし、Alibaba Cloud XXL-JOB インスタンスにインポートできます。このプロセスには、次の手順が含まれます。
オプション。CloudMonitor でアラート連絡先を作成します。システムの正常性とパフォーマンスメトリックに関するアラートは、指定されたアラート連絡先に送信できます。
事前に、オープンソースの XXL-JOB 上のアプリケーションと同じ名前のアプリケーションを手動で作成します。
セルフマネージド XXL-JOB システムからジョブ情報と構成をエクスポートします。
ジョブ情報と構成を Alibaba Cloud XXL-JOB にインポートします。
ジョブ情報と構成をインポートした後、アプリケーションを再デプロイします。これにより、アプリケーションが Alibaba Cloud XXL-JOB にインポートされ、期待どおりに実行できるようになります。
手順 1: (オプション) CloudMonitor コンソールでアラート連絡先を作成する
CloudMonitor でアラート連絡先を作成済みの場合は、この手順をスキップしてください。
CloudMonitor コンソールの アラート連絡先 ページに移動します。 [アラート連絡先の作成] をクリックします。表示されるパネルで、[名前] パラメーターと [アラーム通知サービスのリージョン] パラメーターを構成し、通知方法を構成します。携帯電話、メール、DingTalk、Lark、WeCom、Webhook などの通知方法がサポートされています。

アラート連絡先を作成した後、指定された通知方法を使用して送信されたアクティベーションリンクをクリックするように連絡先に依頼します。

手順 2: 事前に同じ名前のアプリケーションを作成する
MSE コンソールにログオンし、XXL-JOB バージョン ページに移動し、上部のナビゲーションバーでリージョンを選択します。
XXL-JOB インスタンスの ID をクリックして、インスタンスの詳細ページに移動します。インスタンスの詳細ページで、左側のナビゲーションウィンドウの [アプリケーション管理] をクリックします。表示されるページで、[アプリケーションの作成] をクリックします。
オープンソースの XXL-JOB 上のアプリケーションと同じ名前のアプリケーションを手動で作成します。

手順 3: セルフマネージド XXL-JOB からジョブ情報と構成をエクスポートする
オープンソース XXL-JOB 2.1.1 以降のジョブは、Alibaba Cloud XXL-JOB に移行できます。ジョブ情報と構成をエクスポートする場合は、適切なバージョンのエクスポートツールを使用してください。
エクスポートツールパッケージ をダウンロードします。
パッケージを解凍し、application.properties ファイルでエクスポート設定を構成します。
説明application.properties ファイルで xxl-job.alarm.users パラメーターと xxl-job.alarm.channel パラメーターを構成して、アラート連絡先と通知方法を指定することをお勧めします。
application.properties ファイルで、XXL-JOB ジョブのデータベース情報を指定します。
オプション。application.properties ファイルで、ジョブ構成をエクスポートするアプリケーションの名前を指定します。この手順をスキップすると、すべてのアプリケーションのジョブの構成がエクスポートされます。

### xxl-job, datasource datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai datasource.username=root datasource.password=123456 datasource.driver-class-name=com.mysql.cj.jdbc.Driver # フィルタールール。 # ジョブ構成をエクスポートするアプリケーションの名前。複数の名前はカンマ (,) で区切ります。このパラメーターを指定しないと、すべてのアプリケーションのジョブの構成がエクスポートされます。 #xxl-job.filter.app-name=xxl-job-executor-sample1,xxl-job-executor-sample2 # オプション。ジョブの説明に含まれている必要がある文字列。 #xxl-job.filter.job-desc=test # オプション。作成者情報に含まれている必要がある文字列。 #xxl-job.filter.author=test # オプション。ジョブのステータス。このパラメーターを指定しないと、任意のステータスのジョブがエクスポートされます。 #xxl-job.filter.trigger-status=0 # オプション。ID に基づいてジョブがソートされているページでのジョブの読み取りの開始位置。デフォルト値: 0。 #xxl-job.filter.page-start=0 # オプション。ページサイズ。このパラメーターを指定しないと、ページサイズに制限はありません。 #xxl-job.filter.page-size=10 # オプション。エクスポートされたジョブのステータス。値 0 は、エクスポートされたジョブが無効になっていることを示します。値 1 は、エクスポートされたジョブが有効になっていることを示します。このパラメーターを指定しないと、ジョブの元のステータスが保持されます。 #xxl-job.default.job-status=0 # オプション。CloudMonitor で作成されたアラート連絡先。複数の連絡先はカンマ (,) で区切ります。 # xxl-job.alarm.users=Zhang San,Li Si # オプション。通知方法。有効な値: sms、mail、phone、webhook。DingTalk、Lark、WeCom Webhook がサポートされています。複数のメソッドはカンマ (,) で区切ります。 #xxl-job.alarm.channel=sms,mail./start.sh $versionコマンドを実行して、ジョブ構成をエクスポートします。バージョン番号を指定しないと、デフォルトでバージョン2.2.0のエクスポートツールが使用されます。重要オープンソース XXL-JOB のバージョンが 2.1.1 または 2.1.2 の場合は、バージョン 2.2.0 のエクスポートツールを使用してジョブ構成をエクスポートすることもできます。
# バージョン番号を指定せずに sh start.sh コマンドを実行すると、デフォルトでバージョン 2.2.0 のエクスポートツールが使用されます。 sh start.sh 2.3.0
構成がエクスポートされた後、現在のディレクトリに xxljob_version_*******.json という名前の構成ファイルが取得されます。このファイルには、Bean モードのジョブの構成のみが含まれています。

以下は、XXL-JOB 2.2.0 システムからエクスポートされた構成ファイルの構造です。
最外層には、version、type、kind、content などのフィールドが含まれています。 content フィールドの値は、特定のジョブ情報です。
content フィールドの値では、ジョブ情報はアプリケーションごとにグループ化されています。値の各要素には、appName フィールドと jobConfigInfo フィールドが含まれています。
jobConfigInfo フィールドの値は、name、jobType、timeConfig など、アプリケーションのジョブ情報を含む配列です。
手順 4: ジョブを Alibaba Cloud XXL-JOB にインポートする
生成された JSON 構成ファイルを Alibaba Cloud XXL-JOB にアップロードします。これにより、複数のジョブの構成を一度にインポートできます。
MSE コンソールにログオンし、XXL-JOB バージョン ページに移動し、上部のナビゲーションバーでリージョンを選択します。管理する XXL-JOB インスタンスを見つけて、その ID をクリックします。インスタンスの詳細ページの左側のナビゲーションウィンドウで、[タスク管理] をクリックします。 [タスク管理] ページで、[タスクのインポート] をクリックします。

[タスクのインポート] ダイアログボックスで、次のパラメーターを構成します。
同じタスク: 同じ名前のジョブを上書きするかどうかを指定します。デフォルト値: 上書き。 [スキップ] を選択すると、同じ名前のジョブはスキップされ、インポートされません。
アプリケーションの自動作成: 構成ファイルで指定されているが、XXL-JOB インスタンスに存在しないアプリケーションを自動的に作成し、これらのアプリケーションのジョブをインポートするかどうかを指定します。デフォルト値: はい。 [いいえ] を選択すると、XXL-JOB インスタンスに存在しないアプリケーションのジョブはインポートされません。
[タスクのインポート] ダイアログボックスで、[ファイルの選択] をクリックし、前の手順で生成されたジョブ構成ファイルを選択して、ジョブ構成を Alibaba Cloud XXL-JOB にインポートします。
手順 5: アプリケーションを再デプロイする
使用中の xxl-job-core クライアントのバージョンに基づいて、適切な再起動手順を選択します。
2.1.1 以降
Alibaba Cloud XXL-JOB は、バージョン 2.1.1 以降の xxl-job-core クライアントで使用されるプロトコルと完全に互換性があります。 -D パラメーターを使用してアプリケーションを再起動するだけで済みます。アプリケーションを再起動するには、次の手順を実行します。
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。アプリケーションの [操作] 列の [アクセス構成] をクリックします。

[アクセス方法 2: -D パラメーターを使用してアプリケーションを再起動する (コードと構成ファイルの変更なし)] を選択します。アプリケーションの
-Dパラメーターを追加した後、アプリケーションを再起動します。
アプリケーションの再起動後、[アプリケーション管理] ページの [アクチュエーターの数] 列のエグゼキューターの数を確認します。

2.1.0
コードを変更する必要はありません。 pom.xml ファイルの com.xuxueli:xxl-job-core 依存関係のバージョン番号を 2.1.2 に変更するだけで済みます。ビジネスコードは完全に互換性があります。バージョン番号を変更した後、2.1.1 以降 の手順に従ってアプリケーションを再デプロイします。
1.x および 2.0.x
ビジネスコードを変更する必要はありません。依存関係情報を変更し、XxlJobExecutor の初期化ロジックを変更するだけで済みます。アプリケーションを再デプロイするには、次の手順を実行します。
依存関係の
xxl-job-coreバージョンを 2.1.2 に変更します。<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.1.2</version> </dependency>XxlJobConfigで、XxlJobExecutorの初期化コンテンツをXxlJobSpringExecutorの初期化コンテンツに置き換えます。重要@BeanにinitMethodとdestroyMethodを追加しないでください。@Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; }2.1.1 以降 の手順に従ってアプリケーションを再デプロイします。