Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nservicebus 我应该处理哪个ServiceControl.Contracts消息?_Nservicebus_Nservicebus5_Nsb Servicecontrol - Fatal编程技术网

Nservicebus 我应该处理哪个ServiceControl.Contracts消息?

Nservicebus 我应该处理哪个ServiceControl.Contracts消息?,nservicebus,nservicebus5,nsb-servicecontrol,Nservicebus,Nservicebus5,Nsb Servicecontrol,我试图确保第三方依赖关系正在运行,并基于生成ServiceControl CheckResult消息的构建了一个服务来执行此操作 这很好用;当我停止/启动本地和远程windows服务、数据库、流量电容器等时,ServicePulse会提醒我 我现在想构建一个windows service/nServiceBus端点,比如ServicePulse,但是具有可以尝试恢复、发送电子邮件等的逻辑。我真的不想将此代码放到第三方监视器中 我遵循和教程,创建了我的MendStuffOrEmail端点——但它不

我试图确保第三方依赖关系正在运行,并基于生成ServiceControl CheckResult消息的构建了一个服务来执行此操作

这很好用;当我停止/启动本地和远程windows服务、数据库、流量电容器等时,ServicePulse会提醒我

我现在想构建一个windows service/nServiceBus端点,比如ServicePulse,但是具有可以尝试恢复、发送电子邮件等的逻辑。我真的不想将此代码放到第三方监视器中

我遵循和教程,创建了我的MendStuffOrEmail端点——但它不起作用;它不接收任何消息

我本想问“我做错了什么?”,但我想我知道;我正在使用IHandleMessages,它用于失败的消息

我需要监听“CheckResult”类型的消息-但它们是什么?我已经查看了ServiceControl和ServicePulse代码,但无法确定发送/接收的内容。我怎样才能发现这一点,或者其他人真的做了这件事并且已经知道了吗

更新

经过更广泛的搜索,我还订阅了CustomCheckFailed和CustomCheckSuccessed消息。我为他们实现了IHandle接口,但仍然没有收到任何消息。日志显示autosubscriber已获取对它们的订阅。下一步我应该检查什么

我将我的代码与肖恩发布的代码进行了比较 并发现了错误: 我在错误的类中实现了其中两个接口,IConfigureThisEndpoint和AsA_服务器(凌晨2点剪切“n”粘贴错误)

该示例侦听失败的消息,但对于尝试执行此操作的任何其他人,您确实需要订阅CustomCheckFailed和CustomCheckSuccessed消息(nuget-ServiceControl.Contracts)

和一个具有恢复消息逻辑的类似文件(CustomCheckSuccessed)。您可能需要在那里进行检查,以检测它是否正在从故障中恢复,而不仅仅是通过测试

所以,不管怎样,修复了-在我的开发pc上


下一个问题是让它在服务器上工作,这需要一个支持电话。事实证明,ServiceControl还需要一个许可证,作为“高级”、“企业”和“终极”版本的一部分提供,而不是标准许可证上平台的一部分。

我将我的代码与Sean发布的代码进行了比较 并发现了错误: 我在错误的类中实现了其中两个接口,IConfigureThisEndpoint和AsA_服务器(凌晨2点剪切“n”粘贴错误)

该示例侦听失败的消息,但对于尝试执行此操作的任何其他人,您确实需要订阅CustomCheckFailed和CustomCheckSuccessed消息(nuget-ServiceControl.Contracts)

和一个具有恢复消息逻辑的类似文件(CustomCheckSuccessed)。您可能需要在那里进行检查,以检测它是否正在从故障中恢复,而不仅仅是通过测试

所以,不管怎样,修复了-在我的开发pc上


下一个问题是让它在服务器上工作,这需要一个支持电话。事实证明,ServiceControl还需要许可证,作为“高级”、“企业”和“终极”版本的一部分提供,而不是标准许可证上平台的一部分。

您使用的是哪个版本的ServiceControl?您是否有机会在github或dropbox上共享您的代码?这是我不久前构建的一个示例:ServiceControl.exe的1.6.0.0版本和ServiceControl.ServiceContracts.dll的1.1.0.0版本。我既没有使用GitHub也没有使用Dropbox,任何上传都需要先清理/匿名——今晚晚些时候我会看一下。不过,我会先检查一下你的代码,以防我的代码中有任何明显的错误。你使用的是什么版本的ServiceControl?您是否有机会在github或dropbox上共享您的代码?这是我不久前构建的一个示例:ServiceControl.exe的1.6.0.0版本和ServiceControl.ServiceContracts.dll的1.1.0.0版本。我既没有使用GitHub也没有使用Dropbox,任何上传都需要先清理/匿名——今晚晚些时候我会看一下。不过,我会先检查一下你的代码,以防我的代码有任何明显的错误。
public partial class MessageHandler : IHandleMessages<CustomCheckFailed>,
                                      IHandleMessages<CustomCheckSucceeded>
{
    public void Handle(CustomCheckFailed message)
    {
        this.HandleImplementation(message);
    }
    partial void HandleImplementation(CustomCheckFailed message);

    public void Handle(CustomCheckSucceeded message)
    {
        this.HandleImplementation(message);
    }
    partial void HandleImplementation(CustomCheckSucceeded message);

    public IBus Bus { get; set; }   
}
public partial class MessageHandler
{
    partial void HandleImplementation(CustomCheckFailed message)
    {
        var messageBody = string.Format("Message with id {0} failed with reason {1}", message.CustomCheckId, message.FailureReason);
        MailMessageFactory.sendEmail("Failure Notification", messageBody);

        Console.Out.WriteLine(messageBody);
    }
}