シナリオは次のとおりです。
2台のマシン:「マシンA」と「マシンB」。
対応するIPアドレスが192.168.0.100(Aの場合)と192.168.0.200(Bの場合)であるとしましょう。どちらのマシンにも、WindowsServer2008のMSMQがインストールされています。
マシンA
次のキューが構成されています:private$\aaa
、transactional。
そのキューに単一のコンシューマーがありRead
、MSMQトランザクションのすべてのアクションをラップし、「現在の」メッセージからのみ読み取ります(つまり、カーソル操作は使用されません)。
マシンB
にメッセージを送信する単一のアプリケーションがありますFormatName:direct=os:192.168.0.100\private$\aaa
。各Send
メッセージは、(C#のコード)を使用してMSMQトランザクションでラップされます
TimeToReachQueue = Message.InfiniteTimeout
。
TimeToBeReceived = Message.InfiniteTimeout
そして...質問
このシナリオとの構成ではprivate$\aaa
、BからAに送信されるメッセージは次のとおりです。
- 一度お届けしますか?つまり、マシンAのコンシューマーアプリケーションで、「現在の」メッセージが実際に「新しい」(つまり、以前に処理されていない)ことを確認する必要がありますか?それとも、MSMQ自体がその問題を処理しますか?キューだからちょっとばかげているね!しかし、メッセージが正しいと主張する具体的な参考資料は見つかりませんでした。私はそのような主張を見ましたが、Microsoftの公式リソースからではありません。
- 順番に?つまり、
M1
ネットワークの問題が原因でBからAにメッセージを送信できず、ネットワークが正常に戻って、次のメッセージM2
がマシンAに正常に送信される可能性はありますか?
どうもありがとう!