我有许多服务器,每个服务器运行一个服务的单个实例/侦听同一个队列/端点(有意!)导致Competing Consumer模式。
这个解决方案非常棒,因为它提供了负载平衡和高可用性,非常适合我的用例。
然而,我希望能够实现的是一种能够使单个节点离线而不会产生任何影响的方法。换句话说,一种方法能够告诉节点完成已经收到的任何消息的处理,但不消耗任何新的消息(而不仅仅是关闭服务并拥有管理任何正在进行的消息处理的终止。
有什么建议可以解决这个问题吗?能够做到这一点的一个优点是允许无中断的滚动升级/部署。
谢谢!
答案 0 :(得分:0)
调用busControl.Stop();
应该干净地关闭总线,包括正常关闭每个接收端点。这将允许当前消费者完成,但阻止新消费者接收消息。
一旦Stop
方法返回,该过程可能会退出,其余节点将保持在线状态。