Ich habe eine Route wie unten erwähnt. Die Route fragt in regelmäßigen Abständen ein Verzeichnis ab und liest eine CSV-Datei großer Größe. Es teilt dann die Dateien in einem Block von 1000 Zeilen und sendet es an die seda queue(firstQueue)
. Ich habe 15 gleichzeitige Verbraucher in dieser Warteschlange.Concurrent Consumer von Seda in Apache Camel
route.split().tokenize("\n", 1000).streaming().to("seda:firstQueue?concurrentConsumers=15").process(myProcessor).to("seda:secondQueue?concurrentConsumers=15").process(anotherMyProcessor);
1) Was 15 gleichzeitige Verbraucher tut bedeutet - tut es bedeutet, 15 Threads Daten aus dem seda lesen und es auf eine Instanz von myProcessor
passieren? Oder 15 separate Instanzen von myProcessor
erstellt werden jeweils auf die gleiche Kopie der Daten handeln? Beachten Sie, dass myProcessor
ein Singleton ist, was passieren wird, wenn ich es zum Prototyp ändere.
2) Ist es möglich, dass zwei oder mehr Threads die gleichen Daten auswählen und an die myProcessor
übergeben? Oder ist garantiert, dass keine zwei Threads die gleichen Daten haben?
Schätzen Sie eine schnelle Antwort. Vielen Dank!
Ich benutze eine ziemlich alte Version von Camel - 2.10.1. Ist jemandem bekannt, ob es in dieser Version Probleme mit seda und concurrentConsumers gab und in der neueren Version behoben wurde? –