バッチアプリケーション
Spring Boot アプリケーション内から Spring Batch を使用する場合、多くの質問がしばしば発生します。このセクションでは、これらの質問に対処します。
バッチデータソースの指定
ジョブの詳細を SQL データベースに保存するバッチアプリケーションには、DataSource (標準 Javadoc) Bean が必要です。デフォルトでは、1 つの DataSource (標準 Javadoc) Bean が必要です。Spring Batch でアプリケーションのメインの DataSource (標準 Javadoc) 以外の DataSource (標準 Javadoc) を使用するには、DataSource (標準 Javadoc) Bean を宣言し、その @Bean (Javadoc) メソッドに @BatchDataSource (Javadoc) アノテーションを付けます。このメソッドで 2 つのデータソースを使用する場合(たとえば、メインの自動構成された DataSource (標準 Javadoc) を保持する場合)、@Bean (Javadoc) アノテーションの defaultCandidate 属性を false に設定します。
バッチトランザクションマネージャーの指定
バッチデータソースの指定と同様に、@Bean (Javadoc) メソッドに @BatchTransactionManager (Javadoc) をアノテーションすることで、バッチ処理で使用する PlatformTransactionManager (Javadoc) を定義できます。これを行う際に、2 つのトランザクションマネージャーが必要な場合 (たとえば、自動構成された PlatformTransactionManager (Javadoc) を保持する場合)、@Bean (Javadoc) アノテーションの defaultCandidate 属性を false に設定します。
バッチタスク実行者の指定
バッチデータソースの指定と同様に、@Bean (Javadoc) メソッドに @BatchTaskExecutor (Javadoc) をアノテーションすることで、バッチ処理で使用する TaskExecutor (Javadoc) を定義できます。これを実行し、2 つのタスクエグゼキュータが必要な場合 (たとえば、自動構成された TaskExecutor (Javadoc) を保持する場合)、@Bean (Javadoc) アノテーションの defaultCandidate 属性を false に設定します。
コマンドラインからの実行
Spring Boot は、-- で始まるすべてのコマンドライン引数を、Environment (Javadoc) に追加するプロパティに変換します。コマンドラインプロパティへのアクセスを参照してください。これは、バッチジョブに引数を渡すために使用しないでください。コマンドラインでバッチ引数を指定するには、次の例に示すように、通常の形式 (つまり、-- なし) を使用します。
$ java -jar myapp.jar someParameter=someValue anotherParameter=anotherValue コマンドラインで Environment (Javadoc) のプロパティを指定した場合、ジョブでは無視されます。次のコマンドを検討してください。
$ java -jar myapp.jar --server.port=7070 someParameter=someValue これは、バッチジョブに 1 つの引数 someParameter=someValue のみを提供します。
停止または失敗したジョブの再開
失敗した Job (Javadoc) を再起動するには、すべてのパラメーター (識別パラメーターと非識別パラメーター) をコマンドラインで再指定する必要があります。非識別パラメーターは前回の実行からコピーされません。これにより、非識別パラメーターを変更または削除できます。
カスタム JobParametersIncrementer (Javadoc) を使用している場合は、失敗した実行を再開するために、インクリメンターによって管理されるすべてのパラメーターを収集する必要があります。 |