Verteilte Stapelverarbeitung mit Spring Batch und AMQP
-
21-12-2019 - |
Frage
Ich möchte die Verarbeitung großer Chargen verteilen.Die Idee besteht darin, mit Spring Batch eine Reihe von AMQP-Konsumenten in einer Cloud zu starten und dann kostengünstige Aufgaben (wie Artikel-IDs) zu laden und sie an eine AMQP-Börse zu senden.Das Verfassen der Ergebnisse erfolgt durch die Verbraucher selbst.
Gibt es eine fertige Bibliothek, um dies zu erreichen?
Ein paar Gedanken:
- Spring Batch ist völlig verhandelbar.
- Die Losgröße beträgt mehrere Millionen.Ich möchte meinen Nachrichtenbroker nicht durch die brutale Übermittlung all dieser IDs auf einmal zerstören, sondern stattdessen eine Art Drosselung verwenden.
- Ich möchte wissen, welche Artikel verarbeitet wurden, damit ich den Prozess überwachen kann.Daher muss der Chargenkontrollprozess Antworten von den Verbrauchern erhalten.
Lösung
Ja, siehe Spring-Batch-Integration Projekt.Es kombiniert Spring Batch und Spring Integration, um das zu erreichen, was Sie wollen.
Für Batch 2.2.x ist es Teil von spring-batch-admin
Verteilung;In der kommenden Batch-Version 3.0.0 wurde es in den eigentlichen Batch verschoben.
Bei der Remote-Partitionierung werden lediglich Metadaten über die Partitionen gesendet, und die Worker rufen die Daten tatsächlich ab.
Es kommt mit einem JMS-Beispiel Es wäre jedoch nicht schwer, die JMS-Gateways mit Spring-Integration gegen AMQP-Gateways mit Spring-Integration auszutauschen.
Es gibt auch eine Remote-Chunking-Version, bei der die Daten über den Transport statt über Partitionsmetadaten gesendet werden.