【问题标题】:Throttling with Concurrent Consumers限制并发消费者
【发布时间】:2014-07-01 03:05:51
【问题描述】:

根据 Camel 在 Throttler EIP 上的文档,如下所示的路由将允许在任何给定的 1000 毫秒周期内不超过 10 条消息到达 queue:b 端点:

from("queue:a").throttle(10).to("queue:b");

我无法找到解释节流是基于每个线程还是基于每个路由的文档。给定以下路由,是否允许每个消费者向 queue:b 发送不超过 10 条消息,还是将所有消费者的整体限制为每单位时间 10 条消息?

from("queue:a?concurrentConsumers=20")
    .to("bean:myBean?method=doSomeExpensiveLongRunningCalculations)
    .throttle(10).asyncDelayed()
    .to("bean:myBean?method=makeAPICallToExternalService")
    .to("bean:myBean?method=performMoreCalculationsAndSave");

我必须在上面限制的原因是由于第三方 API 施加的速率限制。

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    它是全局的,因此无论使用哪个消费者线程将消息发送到限制器,它每秒 10 个。

    【讨论】:

    • 太棒了!我希望是这样的!
    • 嗨,当我有三个消费者并且指定的节流率为 10 时。然后它以每秒 10X3=30 的速度节流。理想情况下,它应该是每秒 10 条消息。克劳斯是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多