如何使用Camel在运行时更改处理器属性?

时间:2009-07-15 12:30:18

标签: java apache-camel

我有一个用Java DSL编写的Camel路由定义,如下所示:

from(myEndpoint) 
.throttle(200)
.to(myOtherEndpoint);

这使用Throttler连接我的两个端点,Throttler将消息流限制为每秒200条消息。

我正在寻找一种在运行时更改maximumRequestCount /秒的方法。 所以我需要以某种方式进入被调用的Throttler实例并更改属性。

如何访问Throttler?

2 个答案:

答案 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查找。或者通过类型,你可以过滤,只获得节流器等。