【问题标题】:is there anyway in azure to know instances for some other role have started or not?无论如何,天蓝色是否知道其他角色的实例已经开始?
【发布时间】:2012-04-12 02:48:25
【问题描述】:

在我的服务部署中,我有两个角色.. 一个 web 角色和一个工作角色..
在我的 webrole 的 on_start() 方法中,我枚举了工作角色的实例并在某个内部端创建了一个 tcp 连接点。
但通常它会失败,因为工作角色的实例尚未启动。
所以问题是我可以知道实例是否已经启动或者我可以等待工作者角色的实例以某种方式启动吗? 这是代码

public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            ConnectionStatics.ConnectRouterToWorkers();
            Messaging.KeepReadingMessages.Start();

            return base.OnStart();
        }

【问题讨论】:

    标签: azure connection azure-worker-roles azure-web-roles


    【解决方案1】:

    我建议将重试逻辑构建到您的循环中,这样当它无法建立连接时,它只会休眠并稍后重试。这不仅可以解决您的启动问题,还可以帮助您解决在结构控制器添加/删除实例时对服务拓扑的更改(这可能由于多种原因而发生)。

    更进一步,您可能能够利用 RoleEnvironmentChanging 和 RoleEnvironmentChanged 事件来提供有关何时添加/删除实例的通知。但我个人并没有利用这一点,也不能肯定地说这些方法可能会或可能不会反映特定实例的“就绪状态”。

    【讨论】:

      【解决方案2】:

      另一种选择是让工作角色在启动时将消息放入队列中。然后你可以检查队列并等待它在那里发布消息。

      【讨论】:

        猜你喜欢
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        相关资源
        最近更新 更多