すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:セルフマネージド XXL-JOB から Alibaba Cloud XXL-JOB へのジョブの移行

最終更新日:Apr 28, 2025

このトピックでは、セルフマネージド XXL-JOB から Alibaba Cloud XXL-JOB にジョブを移行する方法について説明します。コードを変更することなく、ジョブの再デプロイを完了できます。これにより、効率的なジョブのスケジューリングと管理が実現します。

ソリューションの概要

Alibaba Cloud が提供するエクスポートツールを使用して、オープンソースの XXL-JOB システムからジョブ構成をエクスポートし、Alibaba Cloud XXL-JOB インスタンスにインポートできます。このプロセスには、次の手順が含まれます。

  1. オプション。CloudMonitor でアラート連絡先を作成します。システムの正常性とパフォーマンスメトリックに関するアラートは、指定されたアラート連絡先に送信できます。

  2. 事前に、オープンソースの XXL-JOB 上のアプリケーションと同じ名前のアプリケーションを手動で作成します。

  3. セルフマネージド XXL-JOB システムからジョブ情報と構成をエクスポートします。

  4. ジョブ情報と構成を Alibaba Cloud XXL-JOB にインポートします。

  5. ジョブ情報と構成をインポートした後、アプリケーションを再デプロイします。これにより、アプリケーションが Alibaba Cloud XXL-JOB にインポートされ、期待どおりに実行できるようになります。

手順 1: (オプション) CloudMonitor コンソールでアラート連絡先を作成する

説明

CloudMonitor でアラート連絡先を作成済みの場合は、この手順をスキップしてください。

  1. CloudMonitor コンソールの アラート連絡先 ページに移動します。 [アラート連絡先の作成] をクリックします。表示されるパネルで、[名前] パラメーターと [アラーム通知サービスのリージョン] パラメーターを構成し、通知方法を構成します。携帯電話、メール、DingTalk、Lark、WeCom、Webhook などの通知方法がサポートされています。

    image

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

    image

手順 2: 事前に同じ名前のアプリケーションを作成する

  1. MSE コンソールにログオンし、XXL-JOB バージョン ページに移動し、上部のナビゲーションバーでリージョンを選択します。

  2. XXL-JOB インスタンスの ID をクリックして、インスタンスの詳細ページに移動します。インスタンスの詳細ページで、左側のナビゲーションウィンドウの [アプリケーション管理] をクリックします。表示されるページで、[アプリケーションの作成] をクリックします。

  3. オープンソースの XXL-JOB 上のアプリケーションと同じ名前のアプリケーションを手動で作成します。

    image

手順 3: セルフマネージド XXL-JOB からジョブ情報と構成をエクスポートする

オープンソース XXL-JOB 2.1.1 以降のジョブは、Alibaba Cloud XXL-JOB に移行できます。ジョブ情報と構成をエクスポートする場合は、適切なバージョンのエクスポートツールを使用してください。

  1. エクスポートツールパッケージ をダウンロードします。

  2. パッケージを解凍し、application.properties ファイルでエクスポート設定を構成します。

    説明

    application.properties ファイルで xxl-job.alarm.users パラメーターと xxl-job.alarm.channel パラメーターを構成して、アラート連絡先と通知方法を指定することをお勧めします。

    1. application.properties ファイルで、XXL-JOB ジョブのデータベース情報を指定します。

    2. オプション。application.properties ファイルで、ジョブ構成をエクスポートするアプリケーションの名前を指定します。この手順をスキップすると、すべてのアプリケーションのジョブの構成がエクスポートされます。

    image

    ### 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
  3. ./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

    image

  4. 構成がエクスポートされた後、現在のディレクトリに xxljob_version_*******.json という名前の構成ファイルが取得されます。このファイルには、Bean モードのジョブの構成のみが含まれています。

    image

    以下は、XXL-JOB 2.2.0 システムからエクスポートされた構成ファイルの構造です。

    • 最外層には、versiontypekindcontent などのフィールドが含まれています。 content フィールドの値は、特定のジョブ情報です。

    • content フィールドの値では、ジョブ情報はアプリケーションごとにグループ化されています。値の各要素には、appName フィールドと jobConfigInfo フィールドが含まれています。

    • jobConfigInfo フィールドの値は、namejobTypetimeConfig など、アプリケーションのジョブ情報を含む配列です。

      エクスポートされたジョブ構成の例

      {
        "content":[
          {
            "appName":"app2",
            "description":"アプリケーショングループ 2",
            "jobConfigInfo":[
              {
                "attemptInterval":30,
                "contactInfoList":[
                  {
                    "contactType":1,
                    "name":"Zhang San"
                  },
                  {
                    "contactType":1,
                    "name":"Li Si"
                  }
                ],
                "content":"{\"jobHandler\":\"failJobHandler\"}",
                "description":"test-job04, owner: cxy",
                "executeMode":"standalone",
                "jobType":"xxljob",
                "maxAttempt":0,
                "monitorConfigInfo":{
                  "alarmType":"CustomContacts",
                  "sendChannel":"sms,mail",
                  "timeout":10
                },
                "name":"test-job04",
                "parameters":"",
                "routeStrategy":2,
                "status":0,
                "timeConfig":{
                  "dataOffset":0,
                  "timeExpression":"* * * 1 * ?",
                  "timeType":1
                }
              },
              {
                "attemptInterval":30,
                "contactInfoList":[
                  {
                    "contactType":1,
                    "name":"Zhang San"
                  },
                  {
                    "contactType":1,
                    "name":"Li Si"
                  }
                ],
                "content":"{\"jobHandler\":\"shardingJobHandler\"}",
                "description":"test-job03, owner: cxy",
                "executeMode":"broadcast",
                "jobType":"xxljob",
                "maxAttempt":0,
                "monitorConfigInfo":{
                  "alarmType":"CustomContacts",
                  "sendChannel":"sms,mail",
                  "timeout":0
                },
                "name":"test-job03",
                "parameters":"",
                "routeStrategy":8,
                "status":1,
                "timeConfig":{
                  "dataOffset":0,
                  "timeExpression":"* * 18 * * ?",
                  "timeType":1
                }
              }
            ]
          }
        ],
        "kind":"SchedulerXJobs",
        "overwrite":true,
        "type":"JSON",
        "version":"2.0"
      }

手順 4: ジョブを Alibaba Cloud XXL-JOB にインポートする

生成された JSON 構成ファイルを Alibaba Cloud XXL-JOB にアップロードします。これにより、複数のジョブの構成を一度にインポートできます。

  1. MSE コンソールにログオンし、XXL-JOB バージョン ページに移動し、上部のナビゲーションバーでリージョンを選択します。管理する XXL-JOB インスタンスを見つけて、その ID をクリックします。インスタンスの詳細ページの左側のナビゲーションウィンドウで、[タスク管理] をクリックします。 [タスク管理] ページで、[タスクのインポート] をクリックします。

    image

    [タスクのインポート] ダイアログボックスで、次のパラメーターを構成します。

    • 同じタスク: 同じ名前のジョブを上書きするかどうかを指定します。デフォルト値: 上書き。 [スキップ] を選択すると、同じ名前のジョブはスキップされ、インポートされません。

    • アプリケーションの自動作成: 構成ファイルで指定されているが、XXL-JOB インスタンスに存在しないアプリケーションを自動的に作成し、これらのアプリケーションのジョブをインポートするかどうかを指定します。デフォルト値: はい。 [いいえ] を選択すると、XXL-JOB インスタンスに存在しないアプリケーションのジョブはインポートされません。

  2. [タスクのインポート] ダイアログボックスで、[ファイルの選択] をクリックし、前の手順で生成されたジョブ構成ファイルを選択して、ジョブ構成を Alibaba Cloud XXL-JOB にインポートします。

手順 5: アプリケーションを再デプロイする

使用中の xxl-job-core クライアントのバージョンに基づいて、適切な再起動手順を選択します。

2.1.1 以降

Alibaba Cloud XXL-JOB は、バージョン 2.1.1 以降の xxl-job-core クライアントで使用されるプロトコルと完全に互換性があります。 -D パラメーターを使用してアプリケーションを再起動するだけで済みます。アプリケーションを再起動するには、次の手順を実行します。

  1. 左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。アプリケーションの [操作] 列の [アクセス構成] をクリックします。

    image

  2. [アクセス方法 2: -D パラメーターを使用してアプリケーションを再起動する (コードと構成ファイルの変更なし)] を選択します。アプリケーションの -D パラメーターを追加した後、アプリケーションを再起動します。

    image

  3. アプリケーションの再起動後、[アプリケーション管理] ページの [アクチュエーターの数] 列のエグゼキューターの数を確認します。

    image

2.1.0

コードを変更する必要はありません。 pom.xml ファイルの com.xuxueli:xxl-job-core 依存関係のバージョン番号を 2.1.2 に変更するだけで済みます。ビジネスコードは完全に互換性があります。バージョン番号を変更した後、2.1.1 以降 の手順に従ってアプリケーションを再デプロイします。

1.x および 2.0.x

ビジネスコードを変更する必要はありません。依存関係情報を変更し、XxlJobExecutor の初期化ロジックを変更するだけで済みます。アプリケーションを再デプロイするには、次の手順を実行します。

  1. 依存関係の xxl-job-core バージョンを 2.1.2 に変更します。

    <dependency>
      <groupId>com.xuxueli</groupId>
      <artifactId>xxl-job-core</artifactId>
      <version>2.1.2</version>
    </dependency>
  2. XxlJobConfig で、XxlJobExecutor の初期化コンテンツを XxlJobSpringExecutor の初期化コンテンツに置き換えます。

    重要

    @BeaninitMethoddestroyMethod を追加しないでください。

    @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;
    }
  3. 2.1.1 以降 の手順に従ってアプリケーションを再デプロイします。