java の batch 処理 を main メソッド に、
public static void main(String[] args) {
// 頑張る...
}
Web 検索してみたところ、j-easy/easy-batch: The simple, stupid batch framework for Java というバッチフレームワークを見つけたので、どのような機能があるのか調べてみました。
調べた結果を記載します。
留意事項
この記事は、2015年12月に作成した後、2017年10月に補足説明を記載しました。
リンク切れ箇所等がありましたので、各種リンク先の修正を行なっています。
Java Batch FrameWork について
フレームワークについてまとめている方がいましたので、記事へのリンクを貼っておきます。
Javaバッチ処理 フレームワーク(OSS)ざっくりまとめ - ぬるすぺいす遍在
記事中 に 記載されているものは以下になります。
これらは、Job の構造を規定した framework フレームワークで、スケジュール実行、Job ネット構築については、他のライブラリやミドルウェアに任せる形になるかと思います。
Batch FrameWork という言葉だと、スケジューラ機能を持つ framework と、Job の構造を規定した framework が一緒くたになってヒットする気がします。
その他見つけたのは、スケジューラに関するものでした。
スケジューラ系
-
ScheduledTasks - 2.6.x
Playframework のスケジューラタスク機能。 -
Quartz Enterprise Job Scheduler
Quartz Scheduler 日本語記事も多いです。 -
jaredstehler/dropwizard-quartz: Simple Job Scheduler implementation for dropwizard, integrating Guice and Quartz.
Dropwizard の Scheduler plugin。 -
Integrating Quartz With Spring - DZone Integration
SpringBoot と Quartz Scheduler を統合して使用する記事。
EasyBatch の説明
1. 概要
java の Batch フレームワークです。
Spring-Batch、JBatch と似たような機能を持っています。
サイトのどこかに機能比較ページがありましたが、Error 時にどこまで処理したか覚えておき、Retry 時にそこから実行する機能等は持ってなさそうです。1
2017年10月時点だと、Jeasy : Jeasus, it’s easy.. 配下のライブラリになっており、その他以下のライブラリが存在します。
ルールエンジンがStar数が多いですね。
-
j-easy/easy-rules: The simple, stupid rules engine for Java ルールエンジン
-
j-easy/easy-flows: The simple, stupid workflow engine for Java ワークフローエンジン
-
j-easy/easy-states: The simple, stupid state machine for Java
State machine -
j-easy/easy-props: The simple, stupid properties library for Java
プロパティ管理フレームワーク -
j-easy/easy-jobs: The simple, stupid job server for Java
Job管理用のRestフレームワーク
2. サイト
リンクが切れていたため、2017年10月にリンク先を変更しました。
-
Github Repository
j-easy/easy-batch: The simple, stupid batch framework for Java
3. コア機能
以下は、2015年12月時点で、TopPage に記載されていた内容です。
-
LIGHTWEIGHT FRAMEWORK
依存ライブラリがなく、ライブラリサイズが小さい。 -
POJO-CENTRIC DEVELOPMENT
POJO 中心。
RecordReader、Mapper、Processer 等が POJO 。
戻り値として、カスタム DTO を用いることができる。2 -
DECLARATIVE DATA VALIDATION
Validation によるデータ検証機能。 -
PARALLEL EXECUTION
JOB を並列に実行する機能。 -
JMX MONITORING
バッチ実行状況を JMX interface でモニタリングができる。 -
MODULAR ARCHITECTURE
Batch 処理自体がモジュールの組み合わせで動作するため、モジュール単体を他の Batch で流用使用できる。 3
4. 公式なチュートリアルコード
リンクが切れていたため、2017年10月にリンク先を変更しました。
easy-batch/easybatch-tutorials at master · j-easy/easy-batch
使ってみようと思った経緯
使うに至る経緯を時系列で記載します。
1. public static void main(String[] args)
で直に Batch を書くのが辛くなってきた。
2. google で java batch framework
を検索したら、Spring Batch、jBatch がヒット。
3. glassfish 上で動かす想定なので、jBatch で試しに実装をしてみる。
4. xml を書くのが、辛いと感じるが頑張る。
5. EntityManager を DI しようとしたら、guice が使えない。
6. java - JSR-352 in Google Guice’d standalone batch - Stack Overflow を見る限り今のところ、やはり、CDI のみサポートしている。
7. google で java batch framework light weight
で検索したら、EasyBatch がヒット。
8. guice で DI ができそう。且つ、xml 不要。
まとめると
DI に guice を使っていて、JBatch だと 今のところ CDI しか使えなさそうな雰囲気を感じとり、EasyBatch を使うことにしました。4
実際書いたコード
後日、example を作成し記事にしました。version が 4.0.0
のものですが、よろしければご確認ください。
Java EasyBatch 実装サンプルを作成してみました。 | Monotalk
以上です。
コメント