【问题标题】:Azure Worker Role communicationAzure 辅助角色通信
【发布时间】:2011-08-22 15:58:01
【问题描述】:

我有一个初学者。它做了一些初始化。我希望其他工人等待这个启动工人。在我看来,唯一的方法是将消息放入队列中。工人将轮询队列。他们将在阅读消息后开始。有没有更好的同步方式?

【问题讨论】:

    标签: azure azure-queues


    【解决方案1】:

    队列轮询的问题:一旦一个工作人员看到“我准备好了”队列消息,其他工作人员会发生什么?如果阅读器删除了队列消息(应该如此),其他人永远不会看到它。如果阅读器没有删除它,那么您将在剩下的时间里保留该消息(下次启动时,该消息仍然存在)。

    如果您在启动工作角色实例上托管了一个非常简单的 wcf 服务,并且 AreYouRunning() 方法返回 true/false,该怎么办?如果实例仍在 OnStart() 中,您应该无法连接到该服务。连接后,只需检查返回值。你只需要你的其他角色在他们的 OnStart() 或 Run() 中设置某种类型的轮询机制来进行定期轮询。

    可能还有其他方法可以做到这一点,例如在 Azure 表中设置一行。您仍然必须确保您可以在其他角色启动之前从该表中清除“正在运行”状态,因此 wcf 服务理念可能更好地满足您的需求。

    【讨论】:

    • 假设我们将有 10 个工人。 Starter worker 会将 10 条启动消息放入队列中。每个工人将阅读一条消息并开始工作。
    • 这无法扩展。将您的工作人员从 10 个实例增加到 12 个实例。你的第 11 和第 12 实例做什么?检查队列,什么也看不到。如果你走服务路线,他们调用service.AreYouRunning(),看到“真”,生活就很好。
    • 注意:当工作角色实例重新启动时,您会遇到同样的问题。不会有等待他们的队列消息。
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多