Frage

Ich habe versucht, Informationen zu diesem Thema zu finden, aber aufgrund der Unreife des Rahmen Frühling Integration Ich habe nicht viel Glück gehabt.

Hier ist mein gewünschter Arbeitsablauf:

  1. Neue Dateien in einem 'Incoming' Verzeichnis abgelegt werden

  2. Die Dateien werden aufgenommen mit einer Feile: Inbound-channel-Adapter

  3. Die Datei Inhalt gestreamt, N Zeilen zu einem Zeitpunkt, zu einem ‚Stufe 1‘ -Kanal, der die Leitung in einen intermediären (gemeinsam) Darstellung parst.

  4. Diese analysierte Linie wird auf mehr 'Stage 2' Kanäle geleitet werden.

  5. Jeder ‚Stage 2‘ Kanal hat seine eigene Verarbeitung auf den N verfügbaren Leitungen, sie zu einer endgültigen Darstellung zu konvertieren. Dieser Kanal muss eine Warteschlange hat, die keine Stufe 2 Kanal gewährleistet ist, in dem Fall, dass überwältigt ein Kanal Prozess signifikant langsamer als die andere.

  6. Die endgültige Darstellung der N Zeilen in eine Datei geschrieben wird. Es werden so viele Ausgabedateien sein, wie es in Schritt Routingziele waren 4.

** ‚N‘ oben steht für jede vernünftige Anzahl von Zeilen zu einer Zeit zu lesen, aus [1, was ich in dem Speicher passen kann vernünftigerweise], werden aber garantiert immer kleiner sein als die Anzahl der Zeilen im Voll Datei. *

Wie kann ich erreichen Streaming (Schritte 3, 4, 5) im Frühjahr Integration? Es ist ziemlich einfach, ohne Streaming-Dateien zu tun, aber meine Dateien sind groß genug, ich die gesamte Datei nicht in dem Speicher lesen kann.

Als Seite beachten, ich habe eine funktionierende Implementierung dieses Arbeitsablaufes ohne Frühling Integration, aber da wir mit Spring Integration in anderen Orten in unserem Projekt, würde ich es gerne hier, um zu versuchen, um zu sehen, wie er ausführt und wie der resultierende Code vergleicht für Länge und Klarheit.

War es hilfreich?

Lösung

Dies ist ein sehr interessanter Anwendungsfall, dass ich traurig, dass ich für eine so lange Zeit verpasst. Es ist auf jeden Fall lohnt sich für ein Problem zu schaffen. Im Moment haben wir Unterstützung in Spring-Integration für die Dateien Aufnehmen und Versenden von Verweise auf sie um. Es gibt auch einige rudimentäre Unterstützung die Dateien in einem byte [] oder ein String für die Umwandlung.

Die Antwort ist, dass jetzt würden Sie Schritt 2 in benutzerdefinierten Java-Code tun, die Stücke aus, um einen Stufe 2 Kanal senden. Ich würde empfehlen, gegen Verweise auf Ströme um als Nachrichten Nutzlasten zu senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top