2

私は次のような多くのチュートリアルと msdn ドキュメントを調べてきましたが、キューからメッセージを読み取ったときに何が起こるかを説明しているものはありません...

  1. http://msdn.microsoft.com/en-us/library/ms978425.aspx
  2. http://msdn.microsoft.com/en-us/library/ms978430.aspx

msmq を実際に使用したことがないため、最初に msmq の基本的な理解が必要です。したがって、かなり「初心者」な質問がいくつかあります。

  1. キューをリッスンしているクライアントがメッセージを受信すると、メッセージはどうなりますか? キューから自動的に削除されますか?
  2. キューが多くのクライアントによってリッスンされている場合はどうなりますか? msmq は、メッセージがリッスンしているクライアントのいずれかの (そして唯一の) "1" に到達することを保証しますか?
  3. パブリック キューとプライベート キューの実際の違いは何ですか? パブリック キューにはいつ行けばよいですか?

また、メッセージがいつキューに入ったのか、いつ消費されたのかを追跡する方法を知る必要がありますか?

4

1 に答える 1

3
  1. メッセージがキューから取得されると、メッセージは受信されたと見なされ、キューから削除されます。Msmq は強く順序付けられています。前のメッセージの前にメッセージを受信することはできません。メッセージの受信がアプリケーションにとって何を意味するかに基づいて、キューからのメッセージの削除を制御する場合は、トランザクション キューを使用できます。削除しない限り、同じメッセージを何度も受信し続けます。これはキュー ポイズニングと呼ばれ、それ自体が議論に値するトピックです。

  2. メッセージは受信時に削除されるため、一度に 1 つのクライアントのみが 1 つのメッセージを受信できます。Peek他のセマンティクスが必要な場合は、 receive と組み合わせることができます。

  3. プログラムによるアクセスという点では、プライベート キューとパブリック キューに大きな違いはありません。主な違いは、ディレクトリ サービスへの公開方法です。プライベート キューは、引き続きキュー パスで公開できます。MSDN には、宛先キューの種類に関する適切な説明があります。

WCF には、キューを抽象化する MSMQ バインディングがあるため、コントラクトを操作する傾向がある場合は、これが代替手段になります (ただし、個人的にはお勧めしません)。

于 2012-09-01T13:37:15.713 に答える