我有一个用Java DSL编写的Camel路由定义,如下所示:
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
这使用Throttler连接我的两个端点,Throttler将消息流限制为每秒200条消息。
我正在寻找一种在运行时更改maximumRequestCount /秒的方法。 所以我需要以某种方式进入被调用的Throttler实例并更改属性。
如何访问Throttler?
答案 0 :(得分:1)
好的,我自己想出来了......
您需要自己定义Throttler实例。
Throttler throttler = new Throttler(null, 200);
然后你可以在你的路由中使用它,因为Throttler实现了Processor接口:
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
任何时候你都可以改变节流器的属性。
答案 1 :(得分:1)
是的,这是一个很好的解决方案。
在Camel 2.0中,您现在可以浏览路径中的运行时处理器,从而找到任何Throttlers,然后能够动态更改它。
但是我们也在努力改进Camel 2.1中的JMX,这样你就可以从JMX改变throttler / delayer等。
也许还可以改进导航API,以便您可以在单行中找到,例如,如果您在路由中提供id,则可以通过id查找。或者通过类型,你可以过滤,只获得节流器等。