2016-11-10 11 views
3

私は2つの別々のルートをアプリケーションで実行しており、パス全体の飛行中の総作業量を制御したいと考えています。2つの別々のラクダルートを調整する方法

Route 1: Gzipped file on SFTP --> unzip --> local directory 
Route 2: local directory --> process stuff --> Kafka 

ルート2に問題があるか、作業に遅れている場合は、ルート1にローカルディレクトリがいっぱいになることはありません。処理するのを待っているローカルディレクトリにあるファイルの総数を制限するにはどうすればよいですか?

(それは私がthrottle()より簡単にできる可能性があり、単一のルートだったが、複数の経路の全体像を見てそこに他のオプションがありますか?)

答えて

3

あなたが番号を確認するカスタムRoutePolicyを実装することができますhttp://camel.apache.org/routepolicy.html

既存ThrottlingInflightRoutePolicyを見ることができます。そのディレクトリ内とそのXよりも低く

はキャメルのドキュメントで詳細を参照してください場合は、Xは、その後のルートを一時停止し、再びそれを再開するよりも、そのが大きな場合は、ファイルのどのようにインスピレーションのために実装されます。

+0

ありがとうございます! ThrottlingInFlightRoutePolicyコードは、RoutePolicySupportを基本クラスとして拡張することに非常に役立ちました。ファイルシステムのファイルシステムをチェックするのではなく、InFlightRepositoryをチェックして、ルート2で何個のファイルが処理されているかを調べました。どちらの方法でも、これは多くの可能性を開きます。 P.P.先月のミネアポリスツアーでお会いできたことは素晴らしいことでした。 – dustmachine

+0

良い解決策を見つけたと聞いてよかったです。私はミネアポリスですばらしい時を過ごしました。ミシシッピ川を歩くことは私にとって大きな節目でした。それは、これまで米国を遠くに始めたことを知らなかった。また、街の非常に多くの空の橋が見えるとは思っていませんでした。驚くべきことに、すべての建物をつなぐ13マイルの長い迷路があることを知っていてください。常にApache Camelについての言葉を広める喜び。 –

関連する問題