我用Java编写的DSL这样的Camel路由定义:如何在运行时使用Camel更改处理器属性?
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
使用这限制了消息流每秒200个消息的节流这个连接我的两个端点。
我正在寻找一种方法来在运行时更改maximumRequestCount /秒。 所以我需要以某种方式进入被调用的Throttler实例并更改属性。
如何访问Throttler?
我用Java编写的DSL这样的Camel路由定义:如何在运行时使用Camel更改处理器属性?
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
使用这限制了消息流每秒200个消息的节流这个连接我的两个端点。
我正在寻找一种方法来在运行时更改maximumRequestCount /秒。 所以我需要以某种方式进入被调用的Throttler实例并更改属性。
如何访问Throttler?
好吧,我想通了我自己......
你需要自己定义你的节流器实例。
Throttler throttler = new Throttler(null, 200);
然后你可以使用它在你的路线是这样的,因为调节器实现了处理器接口:
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
你喜欢,你可以改变调节器的性能的任何时间。
是的,这是一个很好的解决方案。
在Camel 2.0中,您现在可以浏览路径中的运行时处理器,从而找到任何Throttlers,然后可以动态更改它。
但是我们也在努力改进Camel 2.1中的JMX,所以你可以从JMX中改变throttler/delayer和类似的东西。
也许还可以改进导航API,以便您可以在一个班轮中查找,例如,如果您在路线中提供了一个ID,也许可以通过标识查找。或按类型,所以你可以过滤和只获得Throttlers等。
是的任何在骆驼路线归结为一个处理器,所以你可以像你一样做。 您可以为路由 。from(myEndpoint).throttle(200).id(“myThrottler”)。(myOtherEndpoint);中的处理器分配一个ID。 那么目前缺少的是一个很好的查找 调节器throttler = context.getProcessorById(“myThrottler”,Throttler.class); //然后根据需要更改调速器。 – 2009-12-04 16:13:33
刚刚创建了一个不错的查找票:CAMEL-2258 – 2009-12-04 16:20:10