MSMQ在阅读邮件时抱怨格式名称

时间:2014-05-15 05:07:26

标签: vb.net msmq

我在远程计算机(10.3.35.3)上有一个非事务性的私有队列(错误),运行xp。我试图从运行Windows 2008的机器上读取消息。 我正在使用" FormatName:Direct = tcp:10.3.35.3 \ Private $ \ errors"访问队列。

我可以连接到它。 我可以偷看。 我有一个用于ReceiveCompleted事件的eventHandler,一旦从队列收到消息就会被触发,但是当我尝试转换" source"对象为messageQueue。

Friend Sub MyReceiveCompleted(ByVal [source] As [Object], ByVal asyncResult As   ReceiveCompletedEventArgs)
Dim objMessageQueue As MessageQueue
Try

    objMessageQueue = New MessageQueue
    objMessageQueue = CType([source], MessageQueue) 

此时我尝试转换" source"对象MessageQueue对象我得到异常"指定的格式名称不支持请求的操作。例如,无法删除直接队列格式名称。"。

异常的堆栈跟踪

at System.Messaging.MessageQueue.GenerateQueueProperties()
   at System.Messaging.MessageQueue.get_QueuePath()
   at System.Messaging.MessageQueue.get_QueueName()
   at MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)

我尝试了不同的格式名称,没有运气。谁能请解释这里有什么问题?我需要使用其他格式名称吗?我们可以事先知道队列想要的格式名吗?

注意:在here中有人说使用id代替,当我在队列属性中查找id时,我得到所有0"类型ID:"字段。

1 个答案:

答案 0 :(得分:0)

好的,我放弃了这个,它仍然没有工作,因为它是一个非常凌乱的旧代码的一部分。我创建了自己的小应用程序(使用相同的代码,相同的.net框架),它可以连接到远程队列和读/写/窥视。所以我相信这是一个非常古老的代码库的维护噩梦的例子。

在我的研究过程中,我找到了一些有用的链接,可能会帮助将来登陆这里的人。 John Breakwell关注远程队列

There is a new security in MSMQ4.0

A registry key in MSMQ3.0

some ports info regarding msmq

some more info about remote msmq 4.0 processing

要查看您的msmq是以工作组模式还是其他模式安装,请转到HKLM-> Software-> Microsoft-> MSMQ->参数检查REG_DWORD工作组。 1是工作组模式。 0是AD模式。

如果您想知道msmq的版本,请查看this wiki page

的版本部分

我几乎忘了提到,作为经验法则,我相信我们应该始终阅读本地和写远程,而不是其他方式。