我正在编写一个将使用 Azure 服务总线的应用程序。对于本地开发,我使用 Windows Server 服务总线来提供相同的服务(使用的代码是相同的)。
我想编写应用程序以在发送或接收消息时容忍瞬时错误。为此,我希望能够测试故障处理代码是否可以处理在执行各种操作期间本地服务总线实例突然不可用的情况。
理想情况下,我想围绕这些场景编写一些自动化集成测试,但我很欣赏这实际上可能无法实现。
我可以做些什么来模拟本地服务总线上的瞬态错误?
我正在编写一个将使用 Azure 服务总线的应用程序。对于本地开发,我使用 Windows Server 服务总线来提供相同的服务(使用的代码是相同的)。
我想编写应用程序以在发送或接收消息时容忍瞬时错误。为此,我希望能够测试故障处理代码是否可以处理在执行各种操作期间本地服务总线实例突然不可用的情况。
理想情况下,我想围绕这些场景编写一些自动化集成测试,但我很欣赏这实际上可能无法实现。
我可以做些什么来模拟本地服务总线上的瞬态错误?
一件简单的事情是调用 stop-sbservice(影响一个节点)或 stop-sbfarm(影响整个场)cmdlet。这将让您在本地模拟服务总线中断。然后,您可以调用 start-sbservice 或 start-sbfarm 来恢复服务并验证您的代码是否正确恢复。这种方法还具有额外的好处,您可以控制服务何时返回(与仅使进程崩溃相比)。此页面包含有关可用 cmdlet 的信息。
如果这还不够,我过去使用的另一种方法是关闭网络接口,或者,如果服务器在另一台机器上,则在用于与服务总线通信的端口上设置防火墙。