JMS では、トピックは中心的な概念です。パブリッシュ/サブスクライブ パターンの表現です。
- パブリッシャーは自分のメッセージをチャネルに公開します
- サブスクライバーはそのチャネルにサブスクライブし、そのチャネルからメッセージを受信します
- すべてのサブスクライバーがメッセージを受信すると、チャネルはメッセージを削除します
MSMQ/.NET に同様の機能はありますか?
注: パブリッシャーは、サブスクライバーの数またはサブスクライバーの数を気にする必要はありません。
MSMQ には、トピックの直接的な概念はありません。通常の操作では、1 つのメッセージが 1 つの受信者にのみ配信されます。メッセージがキューから読み取られると、同じキューから読み取ろうとしている他の受信者は使用できなくなります。MSMQ にはトリガーの概念があり、メッセージを複数の受信者に配信することでこの制限を何とか克服しようとしていますが、トピックと同じではありません (また、使いやすくもありません)。
ユース ケースで実際にトピックが必要な場合は、MSMQ を介してサブスクライバーおよびパブリッシャーと通信する独自のマルチキャスト "サーバー" を作成するか、より適切なテクノロジ ( ServiceBus for Windows、Rabbit MQ、Active MQ など)を選択する必要があります。