2017-10-17 11 views
0

Camelの遅延属性で見つかった問題のさまざまな解決策を見つけてテストしようとしています。 Camelの遅延は実行時にしか設定できないようです。私は次のコードを使用してこれをテストし、その後のポーリング中に変数 'CAMEL_DELAY_TIME_IN_MILLI_SECONDS'を更新しました。Camel Consumer:Dynamic Delay Times

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

私の質問は、キャメルズのダイナミックな遅延を回避する機能です。開発者がこれを定義する関数を作成できるメソッドはありますか? Camelのユーザーは、プロセス内にthread.sleep関数を追加してメーク・シフト遅延を作成することで、この問題を解決しますか?

あなたはこのような豆の言語( http://camel.apache.org/bean-language.html)でBeanのメソッドを呼び出すと、あなたはキャメル言語( http://camel.apache.org/languages)のいずれかを使用することができます遅延で式を使用することができます

答えて

1

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

その後にBeanメソッドを使用すると、好きな動的値を返すことができます。また、メッセージの情報に基づいて値を計算する場合は、そのような情報を渡すBeanパラメータバインディング(http://camel.apache.org/bean-binding.html)を使用するか、単純言語(http://camel.apache.org/simple.html)で十分かどうかを確認してください。

+0

ええと...私はルートと同じクラスのメソッドを参照しようとしましたが、上に示したようなクラスは指定しませんでした。私はそれを試してみましょう。 –

+0

この構文が機能することを確認できます。ボーナス情報もありがとう。 –