【问题标题】:Dynamically set both throttle and timePeriodMillis in Camel在 Camel 中动态设置油门和 timePeriodMillis
【发布时间】:2018-02-25 02:41:30
【问题描述】:

我是 Camel 的新手,正在尝试实现如下要求

from("seda://requestCamel").throttle(ExpressionBuilder.beanExpression(CamelHandler.getInstance(),"getTransactionsPerMillie")).timePeriodMillis(CamelHandler.getTimeInMillie()).bean(service, "callCamel(${正文})");

根据上面的表达式,两个值(throttle 和 timePeriodMillis)都需要在运行时动态更改。使用 bean 表达式我可以管理节流阀,但是 timePeriodMillis 不接受实时值。任何帮助/解决方法都会非常有帮助。

谢谢

【问题讨论】:

    标签: apache-camel throttling


    【解决方案1】:

    您不能在运行时更改时间段毫秒 - 它在 Apache Camel 中的节流器的当前实现中是一个固定值。

    【讨论】:

    • 感谢克劳斯的回复。是否可以每次使用新的油门和 timePeriodMillis 值刷新路线。如果可以,是否有任何副作用。
    • 不,这将是一个坏主意,因为节流器会有状态并限制一些消息。你确定你没有将节流器误用为延迟器吗?使用延迟器,您可以延迟从 bean 单独计算的每条消息
    • 感谢您的更新。延迟器可能也适用于我的用例。我想我很清楚我的用例。要求:用户将提供输入作为他/她想在某个时间窗口内处理多少条消息。例如,第一个用户提供 1000 条消息在 5 分钟内处理。第二个用户在 5 分钟内提供 2000 条消息,依此类推。我有一个骆驼上下文和一条路线。能否请您出示一些灯光。
    • 第二个要求是在路由上启用节流,这样它就不会在任何时候使服务器过载。今天我设置了每小时 10k,但明天它可能会更改为每 30 分钟 7k……这将覆盖用户输入请求。如果超过最大阈值..认为两者都可以使用油门解决。有点困惑什么和如何使用。请帮我解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2020-10-26
    • 2019-01-22
    • 2021-08-23
    • 2016-05-28
    • 2018-06-02
    相关资源
    最近更新 更多