2016-06-18 5 views
0

Ich habe eine Anforderung, wo ich eine Textdatei lesen muss, die Tausende von Zeilen hat Linie ist JSON-Objekt) .Ich muss lesen, validieren Sie die einzelnen Zeilendaten und beharren in verschiedenen Tabellen (transnational -> persistente volle Zeile oder nicht beibehalten diese Zeile). Wäre Frühling Batch gut für diese Anforderung ..? Wenn ja, wie weiter vorgehen.Lesen Sie eine Textdatei mit Tausenden von Zeilen: lesen, validieren und persistent jede Zeile in verschiedenen Tabellen im Multi-Threading-Modus mit Spring Batch

Wie aktiviere ich Multi Threading für zeilenbasiertes Lesen, Validieren und Persistent zur Datenbank, wenn ich Spring Batch verwende. Jede Zeile wäre ein separater Thread.

Denken daran, Service wie folgt zu schreiben.

Für jede Zeile asynchron:
Zeile lesen, diese Zeile validieren und diese Zeile beibehalten, so dass die Speicherauslastung auch geringer ist, anstatt alle Zeilen der Datei in den Speicher zu laden. (wie jede Zeile ist ein separater Thread)

Wie gehe ich vor, um dies zu implementieren ..?

Vielen Dank im Voraus, wird

+1

Sie können alle Antworten finden, die offizielles SB Dokument lesen und Tutorien tun (Sie können auf der Homepage von SB sowie auf externen Seiten finden) –

Antwort

0

Spring Batch soll genau diese Art von Anforderungen erfüllen. Um Ihre erste Frage zu beantworten - wie es weitergeht: Ich empfehle Ihnen, einige der verfügbaren Tutorials zu lesen. Vielleicht könnten Sie das ausprobieren und auf Ihre Bedürfnisse erweitern: Spring Batch tutorial.

In Bezug auf das Thema Multi Threading: Spring Batch verfügt über eine Reihe von Konzepten zum effizienten Ausführen eines ETL (Extrahieren, Transformieren, Laden) -Szenarios. Also hier würde ich empfehlen, die sehr gute Dokumentation durchzugehen: Spring Batch reference manual.

Normalerweise kann der Build in "Chunking" die Verarbeitung von Tausenden von Zeilen ohne Speicherprobleme verarbeiten, wenn Sie dem Reader -> Prozessor -> Writer-Muster folgen. Wenn Sie der Meinung sind, dass Sie eine ausgefeiltere Art und Weise benötigen, Ihre Arbeit zu erledigen, sollten Sie Kapitel 7, Skalierung und Parallelverarbeitung, lesen.

Für die Umsetzung würde ich an einem traditionellen Reader -> Prozessor -> Writer-Muster bleiben. Spring Batch bietet eine JsonLineMapper was hier geeignet sein könnte.