RabbitMQ - 当订阅服务器服务失败并出现某些错误时,如何停止发布者服务



我在 C# 中有 2 个 Windows 服务。 服务 1 将消息发布到 RabbitMQ 队列。 服务 2 订阅 RabbitMQ 队列。 服务 2 还连接到 TCP 服务器,并将它从 RabbitMQ 收到的消息发送到此服务器。 我的问题是,当使用此消息的服务 2 由于某些错误而失败时,有没有办法阻止服务 1 将消息发布到队列上(大多数情况下,如果它无法连接到服务器,则为 SocketException(。 任何指针都会非常有帮助。 如果需要更多信息,请告诉我。

提前谢谢。

只是我关于如何处理它的一些(固执己见的(想法:

  1. 一种选择是在两者之间创建某种 hartbeat 消息传递系统 并检查服务是否每隔一段时间就可以,这有发生某些事情的缺点 在执行一次检查之后和下一次检查之前。

  2. 另一种方法是向服务 1 添加一个锁定标志,使其停止发送到服务 2 并通过让服务 2 在异常时将消息发送回服务 1 来切换标志, 但是对于此,您需要检查呼叫何时再次开始工作,并且 将服务 1 切换回 ON 状态。

  3. 您可以向服务 1 添加指数退避,这将具有不泛洪的好处 服务2,还可以避免消息的检查和乒乓球,缺点是 退避时间可能会变得非常大。

干杯

最新更新