我有一个在 Azure 辅助角色上运行的 NServiceBus 端点。我安装了包 ServiceControl.Plugin.Nsb5.Heartbeat。当我直接从 VS 部署到云服务时,我的端点显示在 ServicePulse 中,并且我得到了预期的心跳。
当我完成我们的自动化部署过程时,servicepulse 没有检测到端点,并且我没有收到任何心跳。(即使您没有安装心跳插件,ServicePulse 也会检测到端点并告诉您该端点没有安装心跳插件)。
当我通过 RD 登录时,我可以在 approot 中看到心跳程序集。我的配置对于两种情况都是相同的,但我将在此处添加以供参考:
在我的配置应用程序设置中:
<add key="Heartbeat/Interval" value="00:00:01" />
<add key="ServiceControl/Queue" value="xxx.xxx.servicecontrol" />
我的其余配置:
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
我的 ServiceControl 实例在我的本地计算机上运行并监视正确的服务总线。错误队列名称设置为error,就像在配置中一样,错误转发队列名称设置为error.log。
当 workerrole 启动并启动 NSB 时,我可以在日志中找到它(顺便说一句,这与我在发送心跳的 workerrole 中找到的完全相同):
Name: Heartbeats
Version: 2.0.0
Enabled by Default: Yes
Status: Enabled
Dependencies: None
Startup Tasks: HeartbeatStartup
我完全不知道为什么相同的代码表现不同。它是相同的代码、相同的配置、相同的设置,只是部署方式不同。在比较已部署的程序集时,我无法检测到差异。心跳组件就在那里,看起来 NSB 也在接收它。我只是没有收到来自该特定端点的任何心跳。
知道我可能会错过什么吗?或者我可以尝试解决这个问题?
提前致谢!