2016-07-30 85 views
0

我有许多服务器,每个服务器运行一个服务的单个实例/侦听相同的队列/端点(有意!)会产生Competing Consumer模式。使用MassTransit让消费者脱机(计划中断)

该解决方案非常棒,因为它提供了负载平衡和高可用性,并且非常适合我的使用情况。

然而,我希望能够实现的是能够使各个节点脱机的方式而没有任何影响。换句话说,一种能够告诉节点完成对已经收到的任何消息的处理,但不消耗任何消息的方式(而不是仅仅关闭服务并且不得不管理终止任何正在处理的消息)。

有什么建议可以解决这个问题吗?能够做到这一点的一个好处是可以实现无中断的滚动升级/部署。

谢谢!

回答

0

调用busControl.Stop();应该干净地关闭总线,包括正常关闭每个接收端点。这将允许当前的消费者完成,但是阻止新的消费者接收消息。

一旦Stop方法返回,该过程可能会退出,其余节点将保持联机状态。