【问题标题】:Throttling FTP Polling consumers using apache camel使用 apache camel 限制 FTP 轮询消费者
【发布时间】:2016-04-25 16:46:05
【问题描述】:

我有一个要求,在某个时间点,我需要连接到多个 ftp/sftp 端点(比如 100 个 ftp 端点)来下载文件并处理它们。

我有如下路线。 Seda 队列通过将消息移动到适当的文件夹来进一步处理消息

from(ftp://username@host/foldername?password=XXXXX&include=.*).to("seda:"+routeId) 

现在,如果我同时启动所有 FTP 端点,这会导致 JVM 内存问题。如何限制 ftp 端点的启动?我可以在 ftp 之前使用 SEDA 来节流(如果可以,我该如何使用它)?我可以使用任何其他 EIP 或想法来限制轮询 ftp 消费者的触发吗?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    如果您想限制消息的获取,您可以查看限制器 dsl。 http://camel.apache.org/throttler.html

    为了控制启动,您可以查看 simplescheduleroutepolicy.. http://camel.apache.org/simplescheduledroutepolicy.html

    它处理路由激活和停用。虽然我自己没有使用过它,但看起来你可以在路线应该开始和停止的时间添加一个受控的延迟。

    【讨论】:

      【解决方案2】:

      我过去曾遇到过这个问题,使用 cron 通过以下方式解决了它:

      from("ftp://username@host/foldername?password=XXXXX&include=.*&scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?")
      

      您可以将每个 FTP 使用者设置为在不同时间拉取(比如相差一分钟)。

      如果您决定走这条路,您可以使用以下网站轻松构建您的 crons:

      http://www.cronmaker.com/

      希望这会有所帮助。

      R.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多