21
Einführung in Spring Batch

String batch

Embed Size (px)

Citation preview

Einführung in Spring Batch

Batchverarbeitung

● Verarbeitung von großen Datenmengen ohne

Benutzerinteraktivität.

● Gleiche Schritte werden auf die gleiche Art von

Daten regelmäßig ausgeführt

● Herausforderungen: große Datenmenge,

Automatisch, Robustheit, Zuverlässigkeit und

Performance, Transaktionen

Beispiele für Batchverarbeitung

● Verarbeitung von Abrechnungen

● Erstellung von Statistiken

● Kommunikation von verschiedenen

Programmen/Systemen

● Allgemein:

– Große Datenmengen einlesen, verarbeiten, in ein anderes

Format exportieren (XML, CSV, Datenbank)

Kurz zu Spring Framework

● Open Source Framework

● AOP

● Convention over configuration

● Dependeny Injection

● Viele Erweiterung (Integration, Boot und Batch)

Spring Batch Job

Vorteile Spring Batch

● Hilft den Code zu strukturieren

● Chunk orientierte Verarbeitung (Streaming, parallele

Verarbeitung)

● Viele Out-of-the-box Komponenten

● Transaktionsmanagement

● Hilft bei der Fehlerbehandlung (Überspringen von

fehlerhaften Datensätzen; Retry-Logik; Transaktion

zurück rollen?)

● Automatisches Logging in die Datenbank

● Infrastruktur für Start/Stop/Retry

Nachteile

● Viel Overhead

● Konfiguration kann unübersichtlich sein

Live Beispiel

Reader und Writer

http://docs.spring.io/spring-

batch/reference/html/listOfReadersAndWri

ters.html

Transaktionen

Gut- Fall

Exception ohne Skip/Retry

Neustart eines Jobs

● Job + Parameter = JobInstance

– Kann solange gestartet werden bis er einmal fehlerfrei

durchgelaufen ist (JobExecution)

● Fehler korrigieren und neu starten mit gleichen

Parametern

● Probleme: Reihenfolge des Einlesens (z. B. SQL:

ohne „order by“)

Transaktion und JDBCReader

● Alle Datensätze auf einmal einlesen

– zu viele Daten im Cache

● Konstant einlesen

– Commit am Ende des Cunks schließt diese Verbindung

● Außerhalb der Transaktion: Für den Reader eine

eigene Transaktion starten

Überspringen von Items

Skip im Processor

Skip im Writer

Skip im Reader

● Skip-Zähler erhöht, Exception gespeichert

● Kein Rollback

Probleme bei Skip

● Der aktuelle Chunk wird in den Cache geladen und

gleichzeitig die Transaktion zurückgerollt

– Queue: Items werden zurück in die Queue gerollt und die

gleichen Items in dem Cache geladen

● Doppelte Verarbeitung!

Retry

Quellen

● Spring Batch in Action (2011) Manning

● http://docs.spring.io/spring-batch/reference/html

● https://www.mkyong.com/spring-batch/spring-batch-hello-world-example

● http://blog.aajtech.com/blog/how-to-use-spring-batch-with-maven-junit-h2-2/

● https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-1-the-

basics/

● https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-2-restart-

cursor-based-reading-and-listeners/

● https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-3-skip-and-

retry/

● … und natürlich Wikipedia :)