有许多问题讨论远程私有MSMQ队列可写但不可读时的情况。在我的情况下,奇怪的是队列可用于来自MSMQ集群所在域之外的客户端的读取和写入操作(这些客户端在工作组中 - 不属于任何域)但对于作为成员的客户端在同一个域中,不可能打开队列进行阅读(写作确实有效)。
以下是尝试打开队列进行阅读时获得的错误消息:
"<COMObject MSMQ.MSMQQueueInfo>", line 3, in Open pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'MSMQQueueInfo','Generic error code. ', None, 0, -1072824319), None)
此错误消息适用于pywin32
。 2147352567
应用程序返回相同的错误代码.NET
。
队列位于由2个Windows服务器(2008 R2)组成的MS群集中。所有客户端也都有Windows Server 2008 R2操作系统。 MSMQ群集实例在注册表(AllowNonauthenticatedRPC
)中设置为NewRemoteReadServerAllowNoneSecurityClient
且1
设置为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Clustered QMs\MSMQ$MSMQ Service\Parameters\security
。这些队列具有授予Everyone
和ANONYMOUS LOGON
的完全访问权限。在重新创建托管队列的集群磁盘之前,一切都运行良好。我怀疑它可能与缓存有关,但不确定要采取哪些进一步的故障排除步骤。
更新:现在可以打开一个队列,以便从域内进行读取。没有更改任何设置。在对整个MSMQ群集进行故障排除的过程中,从头开始删除并创建了服务,但是在此之后它没有开始工作,而是在几个小时之后。这可能是某种故障,也可能与某些我不了解的安全设置变化有关。