2

サブスクライバーでアクティブにできるコンシューマーは 1 つだけであることが、ActiveMQ の永続的なトピックのようです (これが JMS 自体の障害になっているようです)。

つまり、ActiveMQ ドキュメントでは次のようになります。

JMS 永続サブスクライバ MessageConsumer は、一意の JMS クライアント ID と永続サブスクライバ名で作成されます。JMS に準拠するためには、1 つの JMS クライアント ID に対してアクティブにできる JMS 接続は常に 1 つだけであり、クライアント ID とサブスクライバー名に対してアクティブにできるコンシューマーは 1 つだけです。つまり、特定の論理トピック サブスクライバーからアクティブに使用できるスレッドは 1 つだけです。

ただし、他のキュー システム (ドキュメントに基づいて、Azure Service Bus がこれを行うように見えます) では、単一の「サブスクリプション」で複数のスレッド化された「サブスクライバー」を簡単に許可するようです。今の時代、それは当然のことだと思うでしょう。

これはなぜですか?これは、JMS や ActiveMQ の将来のバージョンで解決される予定ですか?

PS「仮想トピック」(上記のドキュメント) は、サブスクライバーごとにバックグラウンドで完全に個別のキューを作成するように見えるため、このシナリオではあまり理想的ではなく、パフォーマンスも低い回避策のようです。

4

1 に答える 1