2017-11-15 14 views
0

私は「開かれたファイルが多すぎます」のような多くのエラーを取得していたメッセージの大きなキューを処理するために、ファイルのコンポーネントを使用している間および制限するための良い方法は何Apacheのキャメル:ファイルコンポーネントIO例外

org.apache.http.nio.reactor.IOReactorException: Failure opening selector 

IO例外を防ぐために処理されているメッセージの量?

答えて

0

seda queueを使用すると、同時に処理されるルート内の交換の総数を制限できます。

from("direct:input") 
    .to("seda:fileProcessor") 
    .to("direct:furtherProcessing); 

from("seda:fileProcessor?concurrentConsumers=100") 
    .process(fileProcessor); 

また、しかし、これは単にむしろ同時に処理される交流の合計数を制限するよりも、時間の所定量するスロットル通過交換の数を制限し、throttle componentで見ることができます。

ファイルディスクリプタの数をいつでも増やすことができます。 Linuxシステムでそれを行うには、this answer

+0

Mmmをチェックしてください。スレッドが1つしかないカスタムスレッドプールを設定するとどうなりますか? – Depzor

+0

はい、カスタムスレッドプールをセットアップすることもできますが、ラクダには単一のスレッドのみを使用することはできません。 特定のルート(http://camel.apache.org/threading-model.html)のスレッドプールを設定することもできます。 ファイル記述子のスレッド数が少なくなった場合は、ファイルオブジェクト/参照がクリーンアップ/ガベージコレクションされています。 – AndyN

+0

ありがとう@AndyN、私は今、私のでカスタムスレッドプールプロファイルを作成しました。キューは今や少し長くなります...しかし、少なくとももう "あまりにも多くのファイルエラー" – Depzor

関連する問題