我有一个要求,在某个时间点,我需要连接到多个ftp / sftp端点(比如100 ftp端点)来下载文件并处理它们。
我有一条如下路线。 Seda队列通过将消息移动到适当的文件夹中进一步处理消息
from(ftp://username@host/foldername?password=XXXXX&include=.*).to("seda:"+routeId)
现在,如果我同时启动所有FTP端点,这会导致JVM内存问题。我怎样才能限制ftp端点的启动?我可以在ftp之前使用SEDA来节流(如果可以,我该如何使用它)?我可以用来阻止轮询ftp消费者触发的任何其他EIP或想法吗?
答案 0 :(得分:1)
如果要限制取消消息,可以查看节流器dsl to。 http://camel.apache.org/throttler.html
为了控制启动,您可以查看simplescheduleroutepolicy .. http://camel.apache.org/simplescheduledroutepolicy.html
它处理路由激活和停用。虽然我自己没有使用它,但看起来你可能会在路线开始和停止时添加一个受控制的延迟。
答案 1 :(得分:1)
I have had this problem in the past solved it using cron in the following way:
from("ftp://username@host/foldername?password=XXXXX&include=.*&scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?")
You can set up every FTP consumer to pull at different times (say with one minute difference).
If you decided to go down this path, you can use the following website to construct your crons easily:
Hope this helps.
R.