2009-07-15 111 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等。

相關問題