2

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:ConnectedConnection History:Connection is ready to transfer messages\private$\receiverEnd2End log

  1. メッセージがネットワーク経由で送信されました (EventId: 4)
  2. のメッセージ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:ConnectedConnection 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

運がない。マイクロソフトのトラブルシューティング プロセスとドキュメントは非常に一般的で単純化されているため、ここで質問することにしました。

4

2 に答える 2

5

送信者ドメイン アカウントには、リモート キューに対する次のアクセス許可が必要です: 送信、アクセス許可の取得、プロパティの取得

これらのマシンは同じドメインにありますか? そうでない場合は、ANONYMOUS LOGON というローカル ユーザーに上記のアクセス許可を付与する必要があります。

于 2015-01-22T14:03:17.187 に答える