6

次のパスを使用して、リモートのプライベートMSMQキューに接続しようとしています。

"FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"

次のエラーが発生します。

"The specified format name does not support the requested operation. For example, a direct queue format name cannot be deleted."

私は明らかに何か間違ったことをしています。ただし、これはローカルキューを使用して機能します。

Spring.Netのメッセージングを使用しています。これが私の設定です

<objects xmlns="http://www.springframework.net">
  <object id="myQueue" type="Spring.Messaging.Support.MessageQueueFactoryObject, Spring.Messaging">
    <property name="Path" value="FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"/>
  </object>

  <object id="messageQueueTemplate" type="Spring.Messaging.Core.MessageQueueTemplate, Spring.Messaging">
    <property name="DefaultMessageQueueObjectName" value="myQueue"/>
  </object>

  <object id="messageGateway" type="My.MessageGateway, My.Assembly">
    <property name="MessageQueueTemplate" ref="messageQueueTemplate"/>
  </object>
</objects>
4

4 に答える 4

5

これはトランザクション キューですか? トランザクション キューからのリモート読み取りはできません。おそらく、Spring フレームワークは、これがトランザクション キューであるかどうかを確認しようとします。これは、ローカル キューでのみサポートされる操作でもあります。

キューを使用する推奨される理由は、リモート キューに書き込み、ローカル キューから読み取ることです。msmq 4.0 (vista および windows 2008) では、リモート トランザクション読み取りがサポートされています (聞いたことがあります)。

spring.net コードをデバッグして、プロセスが失敗したときに正確なコードを確認できますか?

于 2008-12-17T22:22:28.480 に答える
-1

Microsoftヘルプドキュメントには、プライベートキューはローカルコンピュータからのみ「利用可能」であると記載されています。

パブリックキューはメッセージキューネットワーク全体に複製され、ネットワークによって接続されているすべてのサイトからアクセスできる可能性があります。

プライベートキューはネットワーク全体に公開されません。代わりに、それらを含むローカルコンピューターでのみ使用できます。プライベートキューにアクセスできるのは、キューのフルパス名またはラベルを知っているアプリケーションだけです。

http://msdn.microsoft.com/en-us/library/19ww660c(VS.71).aspxから)。

これは本当に少しあいまいです!

Stack Overflowに関する別の投稿は、この記事を参照しています。

http://technet.microsoft.com/ja-jp/library/cc753440(WS.10).aspx

これには、パブリックキューとプライベートキューのはるかに役立つ説明があります。

于 2010-10-28T09:52:56.730 に答える
-1

最初に目に留まったのは、エンドポイント アドレスの大文字と小文字です。少なくともこのスレッドまたはここに投稿された他のすべての例では、異なる大文字と小文字が使用されています。次に、文字列内のバックスラッシュをエスケープしていません。それ以外の

"FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"

試す

"FormatName:Direct=OS:remoteMachineName\\private$\\MyQueue"

hth、エーリッヒ

于 2009-01-05T09:13:14.177 に答える
-1

Trying は正しいですが、キューがリモートかどうか、およびトランザクションかどうかを示すオブジェクトの他の 2 つのプロパティを定義する必要があります。

<object id="myQueue" 
        type="Spring.Messaging.Support.MessageQueueFactoryObject,Spring.Messaging">      
  <property name="Path" value="FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"/>
  <property name="RemoteQueue" value="true"/>
  <property name="RemoteQueueIsTransactional" value="true"/>
</object>
于 2012-05-01T05:58:26.547 に答える