1

私は次のようにJavaDSLで書かれたキャメルルート定義を持っています:

from(myEndpoint) 
.throttle(200)
.to(myOtherEndpoint);

これは、メッセージフローを1秒あたり200メッセージに制限するThrottlerを使用して2つのエンドポイントを接続します。

実行時にmaximumRequestCount/secondを変更する方法を探しています。だから私はどういうわけか呼び出されたThrottlerインスタンスに到達し、プロパティを変更する必要があります。

どうすればThrottlerにアクセスできますか?

4

3 に答える 3

1

わかりました、私はそれを自分で理解しました...

Throttlerインスタンスを自分で定義する必要があります。

Throttler throttler = new Throttler(null, 200);

Throttlerはプロセッサインターフェイスを実装しているため、次のようなルートで使用できます。

from(myEndpoint) 
.process(throttler)
.to(myOtherEndpoint);

いつでもスロットルのプロパティを変更できます。

于 2009-07-15T14:07:25.287 に答える
1

ええ、それはきちんとした解決策です。

Camel 2.0では、ルート内のランタイムプロセッサをナビゲートして、スロットルを見つけて動的に変更できるようになりました。

ただし、Camel 2.1ではJMXの改善にも取り組んでおり、JMXからスロットル/デレイヤーなどを変更できます。

また、Navigate APIを改善して、1つのライナーで検索できるようにすることもできます。たとえば、ルートにIDを指定した場合は、IDで検索できます。または、タイプごとにフィルタリングして、スロットルなどのみを取得できるようにします。

于 2009-07-15T14:31:16.267 に答える
0

グループIDを使用してkafkaトピックから読み取り、RESTAPIに投稿する5つのインスタンスを持つApacheキャメルスプリングブートアプリケーションがあります。これらの5つのApacheキャメルスプリングブートインスタンス全体にスロットルメカニズムを実装したいと思います。たとえば、RESTAPIにルーティングされる1分あたり20Kのリクエスト。ThrottlingのcorrelationExpression機能について読みました。https://camel.apache.org/components/3.15.x/eips/throttle-eip.html

キャメルスプリングブートアプリケーションにA、B、C、D、Eという名前を付けましょう。correlationExpressionは、個々のインスタンスベースで1分あたり20Kリクエストのみを機能します-Aの場合は1分あたり20Kリクエスト、Bの場合は1分あたり20Kリクエスト、Cの場合は1分あたり20Kリクエスト、Dの場合は1分あたり20Kのリクエスト、Eの場合は1分あたり20Kのリクエスト次に、RESTAPIエンドポイントにオーバーロードされます。

5つのラクダの春のブートインスタンス全体にスロットル機能を実装する必要があります-すべてのインスタンスのリクエストレートを追加することで、1分あたりの合計リクエスト数は20Kになります-つまり、Aの1分あたりのリクエスト+Bの1分あたりのリクエスト+C+Requestの1分あたりのリクエストD+リクエストの1分あたりEの1分あたり=20K/分

しかし、5つのラクダの春のブートインスタンスを接続するこのcorrelationExpressionを構成して、これらの5つのラクダの春のブートインスタンスからのすべてのリクエストを考慮して、1分あたりの合計リクエストが1分あたり20Kのリクエストになるように構成する方法がわかりません。

私はすべての助けと指導に感謝します。

マルチインスタンスApacheキャメルスプリングブートのスロットリング

于 2022-02-22T08:05:38.320 に答える