2017-10-17 85 views
0

我一直在試圖找到和測試我發現與駱駝的延遲屬性的問題的不同解決方案。看來,駱駝延遲只能在運行時設置。我已經使用以下代碼測試了這一點,並在隨後的調查中更新了變量'CAMEL_DELAY_TIME_IN_MILLI_SECONDS'。駱駝消費者:動態延遲時間

 from(incomingEndpoint) 
      .delay(CAMEL_DELAY_TIME_IN_MILLI_SECONDS) 
      .threads(MAX_NUMBER_OF_CAMEL_THREADS) 
      .process((exchange) -> {... 

我的問題是圍繞駱駝能力有一個動態的延遲。有沒有一種方法允許開發人員創建一個函數來定義這個?駱駝用戶是否可以通過在進程中添加thread.sleep函數來解決此問題,以創建轉換延遲?

回答

1

您可以延遲使用表達式,你可以使用任何駱駝語言(http://camel.apache.org/languages),如調用與豆語言豆(http://camel.apache.org/bean-language.html)的方法:在

from(...) 
    .delay(method(MyClass.class, "myMethodName")) 
    ... 

然後bean方法可以返回任何你喜歡的動態值。或者,如果您想根據消息中的某些信息計算值,則可以這樣做,並使bean參數綁定(http://camel.apache.org/bean-binding.html)可以傳遞此類信息,或嘗試查看簡單語言(http://camel.apache.org/simple.html)是否足夠。

+0

嗯......我確實嘗試引用與路由相同的類的方法,但是我沒有指定類似上面所示的類。讓我試試看。 –

+0

可以確認此語法有效。感謝您的獎金信息。 –