Connecting To A Private Remote MSMQ Queue

Ian picture Ian · Dec 17, 2008 · Viewed 35.3k times · Source

I'm trying to connect to a remote private MSMQ queue using the path:

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

and I'm getting the following error:

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

I'm obviously doing something wrong. However this does work using a local queue.

I'm using Spring.Net's Messaging. Here's my config

<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>

Answer

Igal Serban picture Igal Serban · Dec 17, 2008

Is this a transactional queue? Remote read from transactional queue is not possible. Maybe the spring framework try to check if this a transactional queue, and this is also an operation that is supported only on local queue.

The recommanded why to work with queues is to write to remote queue and read from local queue. In msmq 4.0 ( vista and windows 2008 ) remote transactional read is supported ( so I have heard).

Can you debbug the spring.net code and see the exact code when the process fail?