2016-04-25 3 views
0

Ich habe eine Anforderung, wo ich zu einem Zeitpunkt der Zeit muss ich zu mehreren ftp/sftp Endpunkten verbinden (sagen 100 ftp Endpunkte), um Dateien herunterzuladen und zu verarbeiten.Throttling FTP Polling Verbraucher mit Apache Kamel

Ich habe eine Route wie unten. Die Seda Warteschlange die Nachrichten weiterverarbeitet, indem sie in entsprechenden Ordnern

from(ftp://[email protected]/foldername?password=XXXXX&include=.*).to("seda:"+routeId) 

Jetzt bewegen, wenn ich alle FTP-Endpunkte zur gleichen Zeit am Start, die in JVM Speicherprobleme wird zur Folge hat. Wie könnte ich den Start der FTP-Endpunkte drosseln? kann ich vor dem ftp einen SEDA benutzen um zu drosseln (wenn ja wie kann ich es benutzen)? Irgendwelche anderen EIPs oder Ideen, die ich verwenden könnte, um das Auslösen der pollenden FTP-Konsumenten zu drosseln?

Antwort

1

Sie können in den Throttler dsl nachsehen, wenn Sie das Abrufen der Nachrichten drosseln möchten. http://camel.apache.org/throttler.html

Für den Start steuern Sie in die simplescheduleroutepolicy aussehen können .. http://camel.apache.org/simplescheduledroutepolicy.html

Es behandelt Route Aktivieren und Deaktivieren. Obwohl ich es selbst nicht benutzt habe, sieht es so aus, als könnten Sie vielleicht eine kontrollierte Verzögerung hinzufügen, wenn Routen starten und stoppen sollen.

1

Ich habe dieses Problem in der Vergangenheit cron auf die folgende Weise unter Verwendung gelöst:

from("ftp://[email protected]/foldername?password=XXXXX&include=.*&scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?") 

Sie können jeden FTP Verbraucher einrichten zu unterschiedlichen Zeiten (etwa mit 1 Minute Unterschied) zu ziehen.

Wenn Sie diesen Weg zu gehen entschieden, können Sie die folgende Website, um Ihre crons zu konstruieren leicht:

http://www.cronmaker.com/

Hoffnung, das hilft.

R.