为什么 IIS/WAS 服务不清理带有 MSMQ 4.0 的 Win 2k8R2 上的锁定队列



我有一个 IIS/WAS 托管服务在开发环境中以我自己的身份运行。它使用 net.msmq 绑定激活。它配置为使用 BufferedReceive(它是一种 WF 服务),这涉及锁定队列。(创建前缀lock_的子队列)。

一段时间后,

在应用程序池终止后,将自动删除锁定队列。

将系统移动到生产环境后,环境 AFAIK 相同,但服务作为专用帐户运行,则不再清理锁定队列。如果我停止应用程序池,锁定队列将保留,并带有消息。

最明显的区别是运行服务的帐户,但我找不到影响此功能的权限类型。或者,我是否忽略了其他一些配置差异。感谢您的帮助。

好吧,

这原来是IIS/WAS中的一个错误。

我有 3 个应用程序池,其中 2 个是自动启动的,其中一个使用 msmq。所有共享相同的 AD 域标识,该标识与 NetMsmqListenerActivator 共享。该 netmsmqlistener 服务最初已停止,但在我启动它后,症状出现了。

不知何故,IIS/WAS 正在创建多个通道,将消息发送到错误的进程。我通过创建一个单独的身份来解决这个问题,现在由使用 mq 的 Web 服务和 netmsmqlistener 使用,然后重新启动服务器。

这是一个痛苦的问题,只发生在生产服务器上。吸取的教训是确保生产服务器与测试服务器共享相同的修补程序和修补程序。

更新:适用于 Win 2k8 R2 SP1 的修补程序:http://support.microsoft.com/kb/2672277

最新更新