如何阻止Azure工作者而不丢失任何消息?

时间:2015-09-14 09:22:21

标签: c# azure azure-worker-roles

实际上,当我想让我的工作人员停止使用azure时,会调用此函数。

    public override void OnStop()
    {
        if (messageProvider != null)
        {
            messageProvider.StopListening();
        }

        base.OnStop();
    }

当我升级工作人员时,如果有任何处理消息,我会丢失该消息。你知道我怎样才能安全地阻止我的工人?

1 个答案:

答案 0 :(得分:0)

从调用时间OnStop()OnStop()退出之前,您有五分钟时间来完成当前处理(无论这意味着什么)。在您的情况下,您似乎拥有某种类型的消息提供者,并且您可以通过messageProvider.StopListening();从消息消费中解脱出来。由于您关注当前消息的处理,您可能需要某种类型的信号来告诉您没有正在处理的消息(包括可能已被读取但未处理的消息)您拨打StopListening())的时间,退出OnStop()是安全的。您如何实施信号取决于您,但您需要等待Onstop()内的信号。

有关OnStop()和五分钟窗口的{/ 3}}的FYI信息。