由于MSMQ在他们尝试启动时未启动,服务终止,因此显而易见的解决方案是将启动类型设置为自动(延迟)。我没有采用明显的解决方案,而是想知道我做错了什么?
我在Win2012上使用NServiceBus V5,并在从V4升级到V5后开始在我所有已安装的服务上获取这些消息。它们被安装为在服务器启动时自动启动。以前没有发生这种情况,如果我手动启动它们,服务就会正常启动。
答案 0 :(得分:2)
我不认为你做错了什么 - 我认为这是你怀疑的:你的服务在消息队列服务准备好之前就开始了。
答案 1 :(得分:1)
假设NServicebus在NServiceBus.Host.exe中运行,为了让服务在MSMQ之后启动,安装服务时需要使用一个开关(我使用了一行,将其分成多行可读性):
.\NServiceBus.Host.exe /install
/servicename:"service"
/displayname:"display"
/dependsOn:"MSMQ"
我曾尝试过“Message Queing”,因为那是服务控制管理器中的内容,但我猜它不会显示名称。通过右键单击服务并查看顶部的服务名称字段,我发现MSMQ是服务名称。
答案 2 :(得分:1)
您无需重新安装即可设置服务依赖性。
使用以下命令: sc config YOURSERVICENAME depend = MSMQ