Spring 日本語
フォロー
Spring Boot 4.1 における MongoDB を利用した Spring Batch ジョブなど
Spring Batchは、歴史的にJobRepositoryでジョブ実行状態を保存するためにSQLデータベースに依存していました。この要件は、MongoDBのようなNoSQLデータベースを中心に作業しているユーザーにとっても維持されていました。最近のSpring Batchバージョンでは、JobRepositoryがJDBCから分離され、Spring Boot 4.1ではMongoDBの自動構成が導入されました。これにより、バッチメタデータをMongoDBに保存できるようになり、個別のSQLデータベースの必要性がなくなりました。この記事では、JobRepositoryとしてMongoDBを使用したSpring Batchジョブの完全な例を示します。この例では、Docker Composeを使用してMongoDBとPostgreSQLをセットアップします。CSVから顧客データを読み込み、それをPostgreSQLテーブルに書き込むETLジョブを定義します。これは、宛先テーブルをリセットするステップと、実際のデータ転送を行うステップの2つのステップで実現されます。データ転送ステップでは、FlatFileItemReader、シンプルなプロセッサ、およびJdbcBatchItemWriterを使用します。このチャンクベースのステップには、耐障害性とリトライメカニズムが構成されています。その後、アプリケーションが実行され、すべてのジョブ実行の詳細がMongoDBに記録されます。OpenTelemetryとGrafanaの統合により、オブザーバビリティが向上します。この記事では、GraalVMネイティブイメージでSpring Batchを動作させることや、最適化のための遅延データソース接続についても触れています。重要な点は、Spring BatchがMongoDBとシームレスに統合されるようになり、開発者は好みのデータベースを妥協なく使用できるようになったということです。