サブスクライバーでアクティブにできるコンシューマーは 1 つだけであることが、ActiveMQ の永続的なトピックのようです (これが JMS 自体の障害になっているようです)。
つまり、ActiveMQ ドキュメントでは次のようになります。
JMS 永続サブスクライバ MessageConsumer は、一意の JMS クライアント ID と永続サブスクライバ名で作成されます。JMS に準拠するためには、1 つの JMS クライアント ID に対してアクティブにできる JMS 接続は常に 1 つだけであり、クライアント ID とサブスクライバー名に対してアクティブにできるコンシューマーは 1 つだけです。つまり、特定の論理トピック サブスクライバーからアクティブに使用できるスレッドは 1 つだけです。
ただし、他のキュー システム (ドキュメントに基づいて、Azure Service Bus がこれを行うように見えます) では、単一の「サブスクリプション」で複数のスレッド化された「サブスクライバー」を簡単に許可するようです。今の時代、それは当然のことだと思うでしょう。
これはなぜですか?これは、JMS や ActiveMQ の将来のバージョンで解決される予定ですか?
PS「仮想トピック」(上記のドキュメント) は、サブスクライバーごとにバックグラウンドで完全に個別のキューを作成するように見えるため、このシナリオではあまり理想的ではなく、パフォーマンスも低い回避策のようです。