我在远程计算机(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:"字段。
答案 0 :(得分:0)
好的,我放弃了这个,它仍然没有工作,因为它是一个非常凌乱的旧代码的一部分。我创建了自己的小应用程序(使用相同的代码,相同的.net框架),它可以连接到远程队列和读/写/窥视。所以我相信这是一个非常古老的代码库的维护噩梦的例子。
在我的研究过程中,我找到了一些有用的链接,可能会帮助将来登陆这里的人。 John Breakwell关注远程队列
There is a new security in MSMQ4.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
的版本部分我几乎忘了提到,作为经验法则,我相信我们应该始终阅读本地和写远程,而不是其他方式。