多数のエンドポイント (エージェント) から多数のメッセージを取得する単純なプロジェクトがあります。これらのエージェントはすべて、同じ形式のメッセージ (データベースに配置されるエンティティ オブジェクト) を出力します。すべてのエージェントが 1 つのキューに書き込み、これらを消費して JPA 経由でデータベースに送信します。
したがって、基本的にシステムには、1 つのキューにメッセージを書き込むプロデューサーのコレクションがあります。キューはシングル スレッドであり、メッセージが受信されたときにそれを受け取り、データベースにダンプします。
ここでの問題は、この方法が遅いことです。ソースに基づいてこれらのメッセージを分割するために使用できる Camel の機能 (再シーケンスなど) はありますか? そのため、Agent1 からのメッセージは作成された順序で永続化する必要がありますが、Agent2 からのメッセージは別のものであるため、Agent1 のメッセージの順序で待機する必要はありません。2 つのエージェントの場合、エージェントごとに 1 つずつ、2 つのキューを作成するだけなので、これは簡単な問題です。多数のエージェントが存在するため、拡張可能なソリューションが必要です。
これをキャメルでネイティブに達成するパターンはありますか? エージェント名で同期し、1 つのメッセージのみをマルチスレッド JPA 書き込みキューに入れる独自のホールドアウト キューを作成することもできますが、これは、次のいずれかを行う必要があるため、少し回り道になります。キューから jpa camel ルートへのコールバックを設定するか、camel を使用せずに独自のマネージャーを介して実行します (これが複雑になるわけではありませんが、Camel などを使用してこれをすべて実行できれば素晴らしいことです)いわば、車輪を再発明する必要はありません)。