DUICUO

分散タスクスケジューラ「XXL-Job」は非常に便利です。ぜひお試しください!

背景

スケジュールされたタスクをより柔軟に制御するため、最近、プロジェクトにスケジュールされたタスクスケジューリングシステムの導入を開始しました。大企業の多くの友人とコミュニケーションをとった結果、XXL-Jobは市場規模が広く、強力な機能を備えていることがわかり、これを第一候補に決めました。

さらに、XXL-JobはSpring Bootベースのオープンソースプロジェクトであり、二次開発が非常に容易であることから、私たちはXXL-Jobを選択しました。この記事では、XXL-Jobの魅力を余すことなくご紹介します。実際に使っていない方もいらっしゃるかもしれませんが、ぜひ知っておいていただきたい機能です。

XXL-求人紹介

公式 Web サイトにアクセスすると、XXL-Job のさまざまな機能の紹介が表示されます。要約すると、習得が簡単、軽量、拡張が簡単、動的にアクティブ化、スケジューリング センター HA、エグゼキュータ HA、柔軟なスケールアップとスケールダウン、ルーティング戦略、フェイルオーバー、ブロッキング処理戦略、タスク タイムアウト制御、タスク失敗の再試行、タスク失敗アラーム、シャード ブロードキャスト タスク、動的シャーディング、イベント トリガー、およびその他の多くの機能です。

上記でメリットを概説しましたが、実際に使用してみると、コードの標準化と品質には改善と標準化が必要だと分かりました。二次開発能力を持つ私たちは、設定ファイル、環境分離、ログ設定をカスタマイズできますが、まだ改善の余地があります。

実際に実践して体験してみましょう。

ソースコードのダウンロード

ソースコードは GitHub または Gitee からダウンロードできます。

GitHub アドレス: http://github.com/xuxueli/xxl-job

Giteeアドレス: https://gitee.com/xuxueli0323/xxl-job

Gitee 経由でダウンロード:

 git クローン git@gitee .com : xuxueli0323 / xxl - job.git

ダウンロードが完了しました。IDEでプロジェクト構造を開きます。

XXLジョブ

コードを直接プルするとメインブランチに移動し、バージョン2.3.1-SNAPSHOTが表示されます。ただし、通常は安定バージョンを使用することをお勧めします。メインブランチから安定バージョン2.3.0に切り替えるには、`git`コマンドを使用するか、IDEに付属のバージョン管理ツールを使用します。

ここでは、git コマンドを使用してリモート ブランチに切り替えます。

 git チェックアウト- b 2.3 .0 origin / 2.3 .0

プロジェクトのソースコード構造は次のとおりです。

  • xxl-job-admin: スケジュールセンター
  • xxl-job-core: パブリック依存関係
  • xxl-job-executor-samples: executor サンプルの例。
  • xxl-job-executor-sample-springboot: Spring Boot バージョン。Spring Boot を通じてエグゼキューターを管理します。この方法が推奨されます。
  • xxl-job-executor-sample-frameless: フレームレス バージョン。

展開時に、スケジュール センターは個別に展開されますが、サンプル内のコードはプロジェクトに統合して使用できます。

テーブル構造を初期化する

プロジェクト ソース コードの doc/db ディレクトリにある tables_xxl_job.sql ファイルを見つけます。このファイルは、データベース テーブル構造を初期化するために使用されます。

これにより、xxl_job で始まる 8 つのテーブルを含む xxl_job という名前のデータベースが作成されます。

xxl_job テーブル

プロジェクト構成の変更

xxl-job-admin プロジェクトの application.properties ファイルを開き、データベース接続や電子メールを送信するための電子メール アドレスの構成など、バックエンドを構成します。

この時点で、プロジェクト全体を独自のコード リポジトリに組み込み、構成を変更し、環境を分離し、いくつかの二次的な開発作業を実行する必要があることにも気づくはずです。

元の application.properties 構成ファイルを分割するという簡単な変更を加えました。

  • アプリケーションプロパティ
  • アプリケーション開発プロパティ
  • アプリケーション製品プロパティ
  • アプリケーションテストのプロパティ

自動デプロイメントを容易にするために、application.properties で環境ごとに異なる構成ファイル情報を指定します。

スプリング.profiles .active = dev

パッケージ化されてリリース

この時点で、IDEでSpring Bootのmainメソッドを直接実行してプロジェクトを開始し、結果を確認できます。あるいは、JARファイルにパッケージ化してデプロイすることもできます。Spring Bootに精通している方であれば、その方法はご存知でしょう。

ここで直接プログラムを起動すると、ログファイルが見つからなくなり、プログラムが起動できなくなります。原因はlogback.xmlの設定にあります。

 <プロパティ名= "log.path"= "/data/applogs/xxl-job/xxl-job-admin.log" />

最も簡単な方法は、パスをローカルに存在するディレクトリに変更することです。しかし、ログパスをXMLファイルにハードコードするのは最適ではないと判断したため、コードをさらに改良し、設定ファイルに抽出しました。

 <!-- <プロパティ名= "log.path"= "/data/applogs/xxl-job/xxl-job-admin.log" />-->
< springProperty スコープ= "context"名前= "log.path"ソース= "log.path" />

さまざまな環境の構成ファイルにパス構成を追加します。

ログ.path =/ Users / zzs / temp / xxl -ジョブ- admin.log

変更後、システムは正常に起動しました。

アクセス: http://localhost:8888/xxl-job-admin

ここではポート番号を変更しました。デフォルトのユーザー名はadmin、パスワードは123456です。

ログインに成功しました。メインインターフェースは次のように表示されます。

xxl-ジョブ-管理者

管理インスタンスのデプロイは完了です。次のステップは、Executor コードを記述し、管理インスタンスから呼び出すことです。

実行プログラムの作成と展開

executor コードは、xxl-job-executor-sample-springboot の例から直接参照できます。

本質的には、xxl-job 依存関係が Spring Boot プロジェクトに導入されたことを意味します。

 <依存関係>
<グループID> com.xuxueli </ グループID>
<artifactId> xxl -ジョブ- コア</artifactId>
<バージョン> $ {プロジェクト. 親. バージョン} </バージョン>
</依存関係>

次に、構成クラスを通じて XxlJobSpringExecutor が初期化され、残りは @XxlJob に基づいてスケジュールされたタスクの JobHandler を定義します。

以下は新しい JobHandler を定義します。

 @成分
パブリッククラス MyXxlJob {

@XxlJob ( "helloXxlJobHandler" )
パブリック void helloXxlJobHandler ( ) {
文字列 jobParam = XxlJobHelper .getJobParam ( ) ;
System .out .println ( "jobParam=" + jobParam ) ;
システム.out .println ( "Hello XXL-Job" ) ;
}
}

開始する前に、xxl-job-executor-sample-springboot の設定ファイルを修正してください。前述のログファイルに加え、xxl.job.admin.addresses も管理者のアドレスに変更してください。

 xxl .job .admin .addresses = http : // localhost : 8888 / xxl - job - admin

プログラムを起動するには、メインメソッドを実行します。次に、管理者管理ページのタスク管理メニューに戻ります。

タスク管理

右上隅の「タスクを追加」をクリックします。

新しいタスク

パラメータの指示に従って設定すると、結果は次のようになります。

埋め込む

実行が完了すると、スケジュール ログで実行履歴を確認できます。

スケジュールログ

コンソールを確認します:

 jobParam = hello  xxl -ジョブ
こんにちはXXL -仕事

プログラムは正常に呼び出され、管理者によって渡されたパラメータも取得されました。

その後、実行頻度、実行ルール、さらにはスケジュールされたタスクの実行中に渡されるパラメータも、管理者管理プラットフォームを通じて管理できます。

まとめ

XXL-Job を試してみて、どう思われますか?プロジェクト内にスケジュールされたタスクをハードコーディングしたり、データベースで設定したりするよりも、はるかに柔軟性があります。管理ページ、実行履歴、柔軟な設定、さらには呼び出しパラメータの受け渡し機能など、どれも非常に実用的な機能を備えています。ぜひお試しください。