4

新しい内部クラウドに既存のアプリケーションをセットアップする際に奇妙な問題が発生しました。

あるサーバー(Server1)から別のサーバー(Server2)のMSMQにメッセージをプッシュする単純なメッセージングシステムがあります。メッセージはアウトバウンドから消えますが、インバウンドキューには表示されません。

Server2 msmqをオフラインにすると、メッセージがServer1に蓄積されます。Server2でMsmqを再起動すると、Server1のアウトバウンドキュー内のメッセージが消えますが、メッセージがServer2に到着することはありません。

詳細:

  1. MSMQは、仮想ネットワークの要件であるため、ワークグループモードでセットアップされます。
  2. キューはプライベートです。
  3. 権限は、特定のユーザーがアクセスできるように設定されています。

なぜこれが起こっているのか、または私が問題を追跡する方法について誰かにアイデアがありますか?

4

5 に答える 5

5

リモートプライベートキューがトランザクションキューであり、メッセージを非トランザクションとして送信するか、またはその逆である可能性があります。キューのトランザクション設定とメッセージが一致しない場合、メッセージは消えます!

于 2012-05-16T09:27:20.807 に答える
4

権限またはアドレス指定の問題のように聞こえます。

[アプリケーションとサービスログ] ->[ Microsoft ] ->[ Windows ] ->[ End2EndというMSMQ ]でイベントログを有効にしてみてください。

このログは、予想される宛先キューへのメッセージの配信で何が問題になっているのかを正確に示しているはずです。

いいえ:配信が成功するたびに、このログで3つのイベントが発生するはずです。

  1. ID blahのメッセージがネットワーク経由で届きました(つまり、メッセージがリモート送信者から到着しました)
  2. ID blahのメッセージがキューblahに送信されました(つまり、メッセージがローカルキューに転送されました)
  3. ID blahのメッセージがキューblahに入れられました(つまり、メッセージがローカルキューに到着します)

Server2008以降を使用していることを前提としています。

于 2012-05-15T11:14:06.740 に答える
4

私は過去にこれを直接フォーマット名で見たことがあります。

DIRECT = OS:192.16.8.0.1 \ PRIVATE $ \ MyQueue

ここで、 DIRECT = TCP:192.168.0.1 \ PRIVATE $\MyQueueを指定する必要があります

参照: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms700996 (v = vs.85).aspx

@John Breakwellはここに注意しましたhttp://blogs.msdn.com/b/johnbreakwell/archive/2010/01/22/why-does-msmq-keep-losing-my-messages.aspx

メッセージのアドレス指定に使用されるサーバー名が宛先マシンと一致しないMSMQがネットワーク経由でメッセージを受信すると、このマシンが正しい受信者であることを常に検証します。これは、DNSの設定ミスなどによって、メッセージが間違った場所に配信されないようにするためです。代わりに、IgnoreOSNameValidationレジストリ値が適切に設定されていない限り、メッセージは破棄されます。これは、インターネットに接続されたMSMQサーバーで行うことができます。たとえば、インターネット上のMSMQクライアントに表示されるドメイン名とサーバー名は、実際の名前とは似ていないことがよくあります(セキュリティ上の理由から)。

于 2013-02-20T17:39:11.793 に答える
0

送信側のアプリケーションコードにネガティブソースジャーナリングを追加して、根本的な原因を正確に突き止めることができます。ほとんどの場合、すでに受け取った2つの回答のうちの1つです。

于 2012-05-17T19:51:36.780 に答える
0

サーバー2の配信不能キューにメッセージが到着していますか?

于 2012-05-22T06:09:06.660 に答える