OK、シナリオをもう少し詳しく説明し、私が知る限りメインブロッカーを強調します。
私には2つのメッセージグループがあり(実際にはスケールがはるかに大きくなっています)、それぞれに異なるスロットリング要件があります-たとえば、メッセージヘッダーでこれをflowRateおよびflowTimeとして指定します。
- グループ1:FlowRate = 1; flowTime = 60(1分あたり1)
- グループ2:FlowRate = 1; flowTime = 1(1秒あたり1)
ヘッダーフィールドを調べて遅延入力として使用するClausに従ってProcessorを実装します。
グループ1から20000メッセージ、グループ2から20000メッセージを追加します
スロットルはコンシューマー側であるため、グループ1によってアクティブ化された遅延は、入力バッファーをすばやく埋めることによって速度を低下させ、グループ2のメッセージはスタックします... Jamesのように複数のキューを使用している場合でも。
JMXGroupIDヘッダーを使用してメッセージをグループ化し、複数のコンシューマーを実装できることは理解していますが、n個のグループに対応するための要件に対応できるとは思いません。
私が疑問に思っていたのは、基本的に、消費者側のスロットルや、消費者が最終的にブロックすることなくスロットルできる他のソリューションではなく、ブローカーを実行する方法があるかどうかです。
私が自分自身を明確に説明し、これまでの提案に感謝していることを願っています。