1

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

4

1 回答 1

2

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

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

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

于 2011-05-10T17:56:42.470 回答