2009-07-15 112 views
1

我用Java编写的DSL这样的Camel路由定义:如何在运行时使用Camel更改处理器属性?

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

使用这限制了消息流每秒200个消息的节流这个连接我的两个端点。

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

如何访问Throttler?

回答

1

好吧,我想通了我自己......

你需要自己定义你的节流器实例。

Throttler throttler = new Throttler(null, 200); 

然后你可以使用它在你的路线是这样的,因为调节器实现了处理器接口:

from(myEndpoint) 
.process(throttler) 
.to(myOtherEndpoint); 

你喜欢,你可以改变调节器的性能的任何时间。

+1

是的任何在骆驼路线归结为一个处理器,所以你可以像你一样做。 您可以为路由 。from(myEndpoint).throttle(200).id(“myThrottler”)。(myOtherEndpoint);中的处理器分配一个ID。 那么目前缺少的是一个很好的查找 调节器throttler = context.getProcessorById(“myThrottler”,Throttler.class); //然后根据需要更改调速器。 – 2009-12-04 16:13:33

+0

刚刚创建了一个不错的查找票:CAMEL-2258 – 2009-12-04 16:20:10

1

是的,这是一个很好的解决方案。

在Camel 2.0中,您现在可以浏览路径中的运行时处理器,从而找到任何Throttlers,然后可以动态更改它。

但是我们也在努力改进Camel 2.1中的JMX,所以你可以从JMX中改变throttler/delayer和类似的东西。

也许还可以改进导航API,以便您可以在一个班轮中查找,例如,如果您在路线中提供了一个ID,也许可以通过标识查找。或按类型,所以你可以过滤和只获得Throttlers等。

相关问题