問題:
各メッセージに「サービス」、「クライアント」、「ストリーム」の 3 つのヘッダーがあるメッセージのバックログを処理します。メッセージのバックログを最大限の並行性で処理したいのですが、いくつかの要件があります。
- 一度に処理できるのは、同じサービスの 10 件のメッセージのみです。
- 一度に処理できるのは、同じサービスとクライアントを持つ 4 つのメッセージのみです。
- 同じサービスとクライアントとストリームを持つすべてのメッセージは、順番に保持する必要があります。
追加情報:
ServiceMix (Camel + ActiveMQ) コンテキストで「JMSXGroupID」とともに「maxConcurrentConsumers」をいじってみましたが、要件の 3 つのうち 2 つを満たすことができるようです。
たとえば、バックログを個別の「サービス」キュー (サービスごとに 1 つのキュー) に分割するコンテンツ ベースのルーティングを行う場合、JMSXGroupID を (サービス + クライアント + ストリーム) に設定し、maxConcurrentConsumers=10 を設定できます。各キューから消費するルート。これにより、最初と最後の要件は解決されますが、同じクライアントが同時に処理するメッセージが多すぎる可能性があります。
ソリューションがサービスとクライアントのすべての組み合わせに対して個別のキューとルートを必要とする場合、何万もの組み合わせが存在する可能性があるため、管理が困難になることに注意してください。
どんなフィードバックでも大歓迎です! 私の質問が不明な場合は、どのように改善できるかをお気軽に提案してください。