Java 如何使用Camel在运行时更改处理器属性?
我有一个用Java DSL编写的路由定义,如下所示:Java 如何使用Camel在运行时更改处理器属性?,java,apache-camel,Java,Apache Camel,我有一个用Java DSL编写的路由定义,如下所示: from(myEndpoint) .throttle(200) .to(myOtherEndpoint); 这将使用节流器连接我的两个端点,节流器将消息流限制为每秒200条消息 我正在寻找一种在运行时更改maximumRequestCount/秒的方法。 因此,我需要以某种方式访问被调用的Throttler实例并更改属性 我怎样才能接近节流阀?好的,我自己想出来的 您需要自己定义节流器实例 Throttler throttler = ne
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
这将使用节流器连接我的两个端点,节流器将消息流限制为每秒200条消息
我正在寻找一种在运行时更改maximumRequestCount/秒的方法。
因此,我需要以某种方式访问被调用的Throttler实例并更改属性
我怎样才能接近节流阀?好的,我自己想出来的 您需要自己定义节流器实例
Throttler throttler = new Throttler(null, 200);
然后,您可以在如下路由中使用它,因为Throttler实现了处理器接口:
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
您可以随时更改节流阀的属性。是的,这是一个很好的解决方案 在Camel 2.0中,您现在可以在路由中导航运行时处理器,从而找到任何节流器,然后能够动态更改它 但我们也在努力改进Camel2.1中的JMX,以便您可以从JMX中更改节流器/延迟器等
还可以改进Navigate API,这样您就可以在一行程序中查找,例如,如果您在路由中提供id,则可以通过id进行查找。或者按类型进行筛选,这样就可以只获取节流阀等。这就是我最初寻找的解决方案。但据我所知,没有办法把一个“id”放在节流阀上寻找它。在我简单地遍历运行时处理器的测试中,我的代码与路由配置极为耦合,当我更改它时,它将不再运行。是的,驼峰路由中的任何内容都归结为一个处理器,因此您可以像以前那样做。您可以为路由中的处理器分配一个id。from(myEndpoint).throttle(200).id(“myThrottler”)。to(MyTheEndpoint);那么目前缺少的是一个很好的查找Throttler Throttler=context.getProcessorById(“myThrottler”,Throttler.class);//然后根据需要更改节流阀。刚刚创建了一个用于良好查找的票证:CAMEL-2258