0

この奇妙な問題に遭遇しました。私は認証されていないトランザクションmsmqからメッセージを受け取ろうとしています。私の環境は:MSMQリモート受信エラー "指定された形式名が要求された操作をサポートしていません"

  • キューはWindows Server 2012 R2です。これは私が(正常に動作します)MSMQにSQL Serverからメッセージを送信しようとしていたクライアントアプリケーションがインストールされているDBサーバ(SQL Serverなど)
  • Serverはまた、Windows Server 2012のでも

R2です。しかし、クライアントアプリケーションが下のコードを使用してメッセージを受信しようとすると、タイトルで述べたエラーがスローされます。

private void OnPeekCompleted(object sender, PeekCompletedEventArgs args) 
    { 
     MessageQueue mq = (MessageQueue)sender; 
     if (mq != null) 
     { 
      try 
      { 
       if (Log.IsInfoEnabled) 
       { 
        Log.InfoFormat("[{0}] Starting processing message queue {1}", _endpoint.RouteName, _queue.QueueName); 
       } 
       mq.EndPeek(args.AsyncResult); 
       MessageQueueTransaction transaction = new MessageQueueTransaction(); 
       transaction.Begin(); 
       Message message = mq.Receive(transaction); 
       ... // omitted for simplicity 

私はSQL

からキューにメッセージを送信しておりますので、私は次のことを確認したのと同じDBサーバ上のメッセージキューを持っている必要がありますので、DBサーバからクライアントサーバにアクセスすることはできません:

  1. SQL
  2. ありませんからメッセージを送信しません、問題のサーバー
  3. 未authenitcated RPCコールの間にN/Wアクセシビリティの問題がありますメッセージキューサーバーのセキュリティプロパティで有効にする
  4. キューの形式は正しいです。私は直接OS形式を使用しています。マシン名の代わりにIPアドレスを指定してTCP形式で試してみた

しかし、役に立たない。何か案は?これは前に働いていたし、動作を停止しました場合は

おかげ

+0

キューアドレスとは何ですか? –

+0

これまでにこの作業を行い、作業を停止しましたか? –

答えて

0

は、あなたの問題は、送信者または受信者のいずれかにDTCの変更、ファイアウォールへの変更、またはその両方にほぼ確実です。

this guidanceによると、あなたがする必要があるかもしれません: ネットワークDTCアクセスを有効にするには、キューコンピュータとクライアントコンピュータの両方を設定...

...例外リストにMS DTCを追加するために、Windowsファイアウォールを設定します。

これが働いたことがない場合、それは他のいくつかの課題の一つかもしれないが、述べhereとして、遠隔読み取りMSMQのために採用され、最適なパラダイムが送信である。すなわち、「最適なメッセージングモデルの一部ではない」であり、 -remote、ローカル読込。リモート読み取りを使用しないようにアーキテクチャを変更することを検討してください。

+0

おかげでトム。私はあなたにリモートでの読み聞かせを聞いて、それが推奨モデルではないことを理解している。私たちは、SQLスケジュールされたジョブを作成してアプリケーションから負荷を取り除き、メッセージキューにメッセージを送信するSPを実行させようとしています。問題は、アプリケーションサーバーがDBサーバーからアクセスできないため、キューがDbサーバーに存在する必要があり、アプリケーションサーバーからのリモート読み取りを実行できることを期待していました。私はあなたが示唆したように、DTCの設定とファイアウォールの設定をチェックしようとします。ありがとう – Jinish

関連する問題