Diese Seite bleibt auch ohne JavaScript lesbar. Suche und Buttons sind Zusatzkomfort.
Spring Batch für Enterprise-Massenverarbeitung
Jobs, Steps, Chunks, Restartability, Skip/Retry und betriebliche Nachvollziehbarkeit.
1. Batch ist kontrollierte Massenverarbeitung
Viele Enterprise-Systeme haben Nachtläufe, Abrechnungen, Imports, Exports, Datenkorrekturen oder regulatorische Reports. Spring Batch modelliert diese Abläufe explizit als Job, Step und Chunk. Der Status landet im Job Repository und ermöglicht Restart, Monitoring und Nachvollziehbarkeit.
Ein Batchjob ist kein verstecktes @Scheduled mit einer 500-Zeilen-Schleife. Robustheit entsteht durch definierte Commit-Größen, fehlerhafte Datensätze, Wiederholungen, Restart und fachliche Kontrollsummen.
@Configuration
class BillingBatchJobConfig {
@Bean
Step invoiceExportStep(JobRepository jobs,
PlatformTransactionManager tx,
ItemReader<Invoice> reader,
ItemProcessor<Invoice, InvoiceExportRow> processor,
ItemWriter<InvoiceExportRow> writer) {
return new StepBuilder("invoiceExportStep", jobs)
.<Invoice, InvoiceExportRow>chunk(500, tx)
.reader(reader)
.processor(processor)
.writer(writer)
.faultTolerant()
.skip(InvalidInvoiceException.class)
.skipLimit(25)
.build();
}
}
2. Restartability und Parameter
Job-Parameter definieren die Identität einer Ausführung. invoiceExport für 2026-07-07 ist fachlich ein anderer Lauf als für 2026-07-08. Ohne saubere Parameter werden Restarts und Audits unklar.
java -jar billing-batch.jar --spring.batch.job.name=invoiceExportJob billing.date=2026-07-07 output.file=/exports/invoices-2026-07-07.csv
3. Skip, Retry, Dead Letter
Skip eignet sich für einzelne schlechte Datensätze. Retry eignet sich für temporäre technische Fehler. Ein fachlicher Fehler sollte nicht endlos wiederholt werden. Jeder übersprungene Satz braucht Bericht, Korrekturpfad und Verantwortlichkeit.
Enterprise-Prüffragen
- Job-Parameter fachlich eindeutig?
- Chunk-Größe begründet?
- Restart getestet?
- Skip/Retry fachlich und betrieblich dokumentiert?