Aufgrund der vielen unterschiedlichen Meinungen zum Schritt in Spring Batch Chaining, je nach Anwendungsfall, möchte ich wissen, was ist die häufigste Sinn:Klärung Schritt Chaining
Chaining der Schritte, also ein Job hat ein Fluss von Schritten, wo jeder Schritt Reader, Processer & Writer hat. Daten zwischen den Schritten werden über den Job ExecutionContext ausgetauscht.
OR
Chaining von ItemProcessors, das heißt ein Job hat nur einen Schritt und nur eine Strömung von ItemProcessors.
Die erste Möglichkeit ist meiner Meinung nach vernünftiger, da der Name 'Job' bedeutet, dass es mehrere Schritte gibt, um es zu beenden. Der Nachteil in vielen Anwendungsfällen könnte sein, dass es zu Beginn und am Ende eines Schrittes zu einem redundanten oder manchmal "leeren" Lesen von & kommt. Die zweite ist die gebräuchlichste Lösung, aber ich denke, diese "One Step" -Lösung ist nicht ganz die, für die Batch-Verarbeitung gedacht ist.
Was ist Ihre Meinung dazu?
aber was ist der Grund dafür, dass Sie den ExecutionContext nicht verwenden und stattdessen in eine Datei schreiben? – eSKape
Stellen Sie sich vor, Sie müssten 100 Milliarden Datenzeilen verarbeiten. Das würde Ihr Gedächtnis in die Luft jagen. Mit dem Chunk-basierten Ansatz haben Sie eine konstante Speichernutzung, unabhängig von der Anzahl der zu verarbeitenden Zeilen. Eine andere Sache ist die Fehlerbehandlung und Neustartbarkeit. Wenn beispielsweise Ihr Job nach 90% der Arbeit fehlschlägt, sorgt SpringBatch dafür, dass nur die fehlenden 10% in einem zweiten Start verarbeitet werden, da SpringBatch die aktuelle Position im Ausführungskontext speichert (dies ist der Ausführungskontext) verwendet für: Prozessdaten und keine Geschäftsdaten –
ok, das ist ein Punkt! – eSKape