我有一个小域(6台服务器),我需要使用MSMQ。该项目的代码库来自一家使用WIN2K3服务器的公司已有5年历史的项目,所有功能都正常运行。
我在所有服务器上启用了MSMQ功能(包括AD集成)。
我在所有服务器上创建了PUBLIC队列。
当代码尝试列出远程服务器上的所有公共队列时,代码表明有0个公共队列。
MessageQueue[] MqList = MessageQueue.GetPublicQueuesByMachine(HostName);
它不会抛出异常,它根本看不到队列。
此外,当我使用“计算机管理”管理单元连接到远程计算机时,我无法看到“消息队列”节点。我能够在WIN2K3中看到远程消息队列节点。 (见图)
我认为这是一个权限问题,但我尝试尽可能广泛地打开权限,但我仍然没有爱。
答案 0 :(得分:0)
方法GetPublicQueuesByMachine()
确实不可通过远程访问。
您可以在MSDN文档中的功能矩阵中看到这一点:MessageQueue.GetPublicQueuesByMachine:
下表显示了此方法在各种工作组模式下是否可用。
Workgroup mode Available -------------- --------- Local computer No Local computer and direct format name No Remote computer No Remote computer and direct format name No
我刚刚发现Queue类的大多数方法都有这样的特征矩阵。 : - )
答案 1 :(得分:0)
我还发现GetPublicQueuesByMachine方法在Win2K8服务器上不起作用。
我发现GetPublicQueues DID有效。所以我用它来拉动我需要的队列。