Apache Camelを使用して、ディスパッチャーEIPを実装しています。キューには、さまざまなURLで配信する必要があるメッセージが何千もあります。各メッセージには、独自の配信URLおよび配信プロトコル(FTP、電子メール、HTTPなど)があります。
それが実装されている方法:
- 単一の camel コンテキストを起動します。コンテキストは JMX に対して無効になり、loadStatisticsEnabled は ManagementStrategy で false に設定されます。バックグラウンド管理スレッドの作成を無効にするために、バージョン 2.11.0 で対処された jira の問題で言及されているように。
- メッセージごとにルートが構築され、メッセージは配信のためにルートにプッシュされます。
- メッセージが処理された後、ルートはシャットダウンされ、コンテキストから削除されます。
それぞれが同じコンテキストを共有するディスパッチャ コンポーネントの 200 のスレッドを使用して、小規模なパフォーマンス テストを行いました。処理時間はミリ秒単位であるのに対し、ルートを開始する時間は最大 60 秒まで増加することが観察されました。
問題 CAMEL-5675 は、これが修正されたと述べていますが、ルートの開始にかなりの時間がかかることを観察しています。 https://issues.apache.org/jira/browse/CAMEL-5675
HTTPのために作成されているルートはです
from("direct:"+dispatchItem.getID())
.toF("%s?httpClient.soTimeout=%s&disableStreamCache=true", dispatchItem.getEndPointURL(),timeOutInMillis);
各 dispatchItem には一意の ID があります。