我用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