スケジューリングおよび監視-springバッチ(7)XXLジョブバッチを結合
タグ:springbatch
記事のディレクトリ
1.はじめに
上の以前の記事の後Spring Batch
、最も単純なものから組み合わせた試料の導入、helloworld
データ列出力、データベースへのデータベースの同期とデータベースへのファイルを読み、[組み合わせるためにBeetlSql
、データベースを読み書きするためにさらに簡略化し、その後、動的パラメータによって結ばすでに基本的にデータの抽出、データの同期作業を満たすため、浅いから深いに、増分同期を達成与えられ、ここでは前の記事の一覧は以下のとおりです。
- バッチデータアーティファクト-Springバッチ(1)導入と使用のシナリオ
- バッチを-springコンポーネントの概要(2)のHelloWorldの
- クイックアセンブリ-springバッチ(3)データベースにファイルデータを読み込み、
- データベースへの最終的なデータベース-springバッチ(4)データベース
- 簡単にデータは(5)連携してデータを読み書きするためにバッチを-spring読んbeetlSql
- 増分同期-springバッチ(6)結合および動的パラメータ増分同期
バックグラウンドサービス定期サービスの運用および保守作業は、実行中のサービスを監視するタスクの統計を実行する方法を含め、一括サービスよりも重要な課題であるとして、一般的に実行するバッチ・ジョブは、その上のタスク実行ログを表示します。前述のように、Spring Batch
それはバッチフレームワークではなく、スケジューリングのフレームワークです。スケジューリングフレームワークは、簡単なポイントを使用することができquartz
、 crontab
一方で市場が比較的汎用性の完璧なスケジューリングフレームワークを持って、比較することによって、個人的な感情はxxl-job
、ここで紹介し、そのため、使用を使用するのは比較的簡単で、比較的完全な機能xxl-job
のSpring Batch
バッチタスクをスケジューリング、監視機能を実現しています。
2.xxlジョブ紹介
xxl-job
軽量分散タスクスケジューリングプラットフォームであり、そのコアの設計目標は、急速に学ぶことは簡単で、軽量で、拡張が容易な開発することです。システムアーキテクチャ設計は、個別のアクチュエータ、スケジューリングシステムとスケジューリングシステムは、アクチュエータに関連付けられているスケジューリングロジックを担当し、合理的である開発者が直接スケジューリング・システムを使用することができ、特定のタスクを達成するためのロジックで、その後、それをする彼らの使命を達成するためのロジックがエグゼキュータのためでありますすることができますので、箱から出して。具体的な使用と詳細な手順は、その参照の公式文書を
よるとxxl-job
、ドキュメント、インストールするxxl-job
データベースを、その後、xxl-job-admin
次のようにページを起動し、起動:
3.書き込みアクチュエータ春のバッチ
この例では、中古品に基づいているサンプル・データベースの増分同期を、唯一のオリジナルに基づいて実行するようにデバイスを追加する必要があり、これは一例ですspring-batch-xxl-executor
。よるとxxl-job
、公式文書、方法についての指示がある展開「アクチュエータプロジェクト」を設定するには。本実施例に特有の、以下を達成するように構成されました。
3.1 Mavenを頼りに追加
追加xxl-job
次のように、コアの依存関係を:
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
3.2アクチュエータプロファイルの追加executor.properties
次のようにアクチュエータは、名前、住所、および他のスケジューリングシステムを埋めるように配置されたアクチュエータを含みます。
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8089/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname=${spring.application.name}
xxl.job.executor.ip=
xxl.job.executor.port=9999
### xxl-job, access token
xxl.job.accessToken=
### xxl-job log path
xxl.job.executor.logpath=logs
### xxl-job log retention days
xxl.job.executor.logretentiondays=-1
3.3アクチュエータアセンブリの構成
追加java
上述のプロファイルをexecutor.properties
設定。次のように:
@Configuration
@ConfigurationProperties(prefix = "xxl.job")
@PropertySource("classpath:/config/executor.properties")
@Slf4j
public class JobExecutorConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
......略
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
log.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.4ライト・アクチュエータ
アクチュエータは、実際には、継承されたIJobHandler
中で、実装クラスをexecute
論理的なメソッドを実装するためのタスクの実現。この例では、単にテストの開始を押す前に、タスクのロジックを実現することができます。次のように:
@JobHandler(value="incrementUserJobHandler")
@Component
public class JobIncrementUserHandler extends IJobHandler {
@Autowired
private JobLauncherService jobLauncherService;
@Autowired
private IncrementService incrementService;
@Autowired
private Job incrementJob;
@Override
public ReturnT<String> execute(String s) throws Exception {
return JobUtil.runJob4Executor("incrementUser",incrementService,jobLauncherService,incrementJob);
}
}
スケジューリング春のバッチのため4. XXLジョブ
展開(正しく設定注)した後、次のことが可能なスケジューリングインターフェイスをタスク。具体的なプロセスは、あなたがへの参照を追加することができますすることができた文書。これは単に、アクチュエータを追加して、タスクを追加し、の実行を指定し、あなたが開始することができ、式を。ミッションの後に次の出力:xxl-job-admin
spring-batch-xxl-executor
xxl-job-admin
xxl-job
spring-batch-xxl-executor
incrementUserJobHandler
cron
5.まとめ
この記事は、サンプル・データベースの増分同期に基づいており、使用Spring Batch
の組み合わせでxxl-job
そのバッチジョブより保守、希望が必要ですので、監視することができ、タスクスケジューラを達成するためにSpring Batch
、バッチジョブの開発を支援するために人員を。