ActiveMQメッセージグループは一意の顧客IDの並列処理に確実に対応しますが、私の評価では、一意のグループごとにスロットルを導入することは、Camel/ActiveMQの未実装の機能を表すということは正しいです。
メッセージグループだけでは、説明されているSLAを満たしません。メッセージの各グループ(顧客IDによって関連付けられている)は、グループごとに1つのスレッドで順番に処理されますが、要求が応答を受信するのに1分もかからない限り、顧客ごとに1分あたり1つの要求の要件は適用されません。 。
そうは言っても、JIRAの機能要求をシミュレートする方法で、メッセージグループとスロットル戦略を組み合わせることが可能かどうかを知りたいと思います。これまでの私の試みは失敗しました。私はこれらの線に沿って何かを考えていました:
<route>
<from uri="activemq:pending?maxConcurrentConsumers=10"/>
<throttle timePeriodMillis="60000">
<constant>1</constant>
<to uri="mock:endpoint"/>
</throttle>
</route>
ただし、スロットルは、個々のコンシューマーではなく、エンドポイントに移動する一連のリクエスト全体に適用されるようです。私は認めなければなりません、私はその振る舞いを見つけて少し驚いた。メッセージにJMSXGroupIdヘッダーに顧客IDが含まれている場合、スロットルは各コンシューマーに個別に適用され、元の質問のSLAを満たします。