SenderServer (MS Server 2012) とReceiverServer (MS Server 2008 R2)という同じドメイン内の 2 つのサーバー間にMSMQメッセージング メカニズムを作成する必要があります。
ReceiverServer にプライベートなトランザクション キューを作成し、.\private$\receiver
システムと管理者にメッセージの受信 (およびピーク) 権限を与えました。
次に、次のコードを使用して、メッセージを作成してキューに転送するクライアント アプリケーションを作成しました。
MessageQueue queue = new queue("FormatName:Direct=OS:ReceiverServer\private$\receiver");
Message message = new Message();
message.Body = "myMessage";
using (MessageQueueTransaction tx = new MessageQueueTransaction())
{
tx.Begin();
queue.Send(message, "myLabel", tx);
tx.Commit();
}
アプリケーションを展開する前に、自分のマシン (Windows 7) で、 と を使用して発信キューを正しく作成することをテストしましDirect=OS:ReceiverServer\private$\receiver
た。メッセージは正しくReceiverServerに送信され、キューに入れられます。各メッセージのReceiverServerは、次の 2 つのイベントをログに記録します。State:Connected
Connection History:Connection is ready to transfer messages
\private$\receiver
End2End log
- メッセージがネットワーク経由で送信されました (EventId: 4)
- のメッセージ
ID CN=msmq, CN=[mymachinename], CN=Computers, DC=[domain], DC=[other]
がキューに入れられましたReceiverServer\private$\receiver
(EventId: 1)
次に、同じコードを使用してSenderServer内からクライアント アプリケーションを使用しました。サーバーはとを使用して送信キューDirect=OS:ReceiverServer\private$\receiver
を正しく作成します。メッセージがキューに入れられて送信されるのを確認できますが、リモートのReceiverServerキューでメッセージを受信しません。ReceiverServerのEnd2End イベント ログを確認すると、最初のメッセージ (メッセージがネットワーク経由で送信された (EventId: 4)) だけが表示されますが、メッセージはキューに配置されません。State:Connected
Connection History:Connection is ready to transfer messages
.\private$\receiver
両方のマシンからファイアウォールをオフにし、キューの承認設定を変更し、キューに対して次のエンドポイントを試しました。
FormatName:Direct=OS:[IPv6 address]\private$\receiver
FormatName:Direct=TCP:ReceiverServer\private$\receiver
FormatName:Direct=TCP:[IPv6 address]\private$\receiver
運がない。マイクロソフトのトラブルシューティング プロセスとドキュメントは非常に一般的で単純化されているため、ここで質問することにしました。