2014-09-19 49 views
0

当我使用cloudify(2.7)部署应用程序,它模块主要包括两个服务(如服务A dependsOn服务B),这里是APP-application.groovycloudify服务dependsOn其他服务

application { 
    name "app" 

    service { 
     name = "B" 
    } 

    service { 
     name = "A" 
     dependsOn = [ "B" ] 
    } 
} 

当服务B有2个实例,其中一个服务B实例可用,服务A开始调用启动事件,但服务A依赖于服务B的所有实例,它是否有一些配置来解决它?

回答

0

复制我的回答从https://groups.google.com/forum/#!topic/cloudify-developers/TZzwfzY-rLY:在Cloudify 2.7

的默认行为是启动服务,一旦有所有的服务中至少具有一个运行实例这取决于。 如果您希望等待其他服务(或其他某个依赖性逻辑)的所有实例,则应在生命周期脚本中实施此操作。您可以访问的使用服务上下文API其他服务的状态: http://getcloudify.org/guide/2.7/developing/the_service_context_api.html

例如,您可以添加使用waitForInstances()API等待所需数量的情况下的“预装”事件。请注意,此API可让您访问尚未启动的实例。你可以通过调用检查实例的当前状态:

serviceInstance.getMonitors(“USM_State”)

USM_State的可能值是可在这里: https://github.com/CloudifySource/cloudify/blob/master/dsl/src/main/java/org/cloudifysource/dsl/internal/CloudifyConstants.java#L35

所以2的值表示运行实例。

+0

这是非常有用的感谢 – chaoluo 2014-09-30 08:09:51