Wie man bei der Bearbeitung von Aufgaben mit Multithread -Pipeline anmutig scheitertJava

Java-Forum
Guest
 Wie man bei der Bearbeitung von Aufgaben mit Multithread -Pipeline anmutig scheitert

Post by Guest »

Ich entworfene eine Multi-Thread-Datenpipeline, die auf dem Service A beruht. Ich verfolge ein Produzenten-Verbraucher-Design, um eine Liste von Objekten zu verarbeiten. Wo mein Produzent die API von Service B aufruft, um Aufgaben für jedes Objekt abzurufen (könnte Millionen von Aufgaben pro Objekt sein) und Verbraucher die Aufgaben verarbeitet und sie in Service c. < /p>
Meine Frage verarbeitet Wie kann ich dies so entwerfen, dass ich, wenn der Service B ausfällt (der Produzent kann keine Aufgaben erhält) oder der Service C ausfällt (Verbraucher kann Aufgaben nicht bearbeiten), anmutig aufhören und meinen Fortschritt speichern.
Ich kann nicht zuerst alle meine Aufgaben in einem Blockingqueue speichern, da es zu viele Aufgaben wären, um in Memory zu handhaben. Aufgaben in einem DB, aber dann würde es meine Pipeline dramatisch verlangsamen, da sie jetzt Schreib-/Lesevorgänge ausführen muss. Wäre es nicht eine Verschwendung von DB -Raum, wenn ich Millionen von Aufgaben speichere, die ich nur einmal bearbeiten muss? Ich müsste sie alle nach dem Verarbeitungsabschluss alle aus der DB löschen, so dass es fast ein Aufwandsverschwendung erscheint?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post