如何知道申请?

时间:2014-10-10 04:21:28

标签: cloudify

当我使用cloudify(2.7)部署应用程序时(例如,应用程序应用程序包含两个服务A和B),我尝试使用Admin.addEventListener()添加一些eventListener,但它不起作用!

我尝试添加ProcessingUnitStatusChangedEventListener,当我调试代码时,(ProcessingUnitStatusChangedEvent)event.getNewStatus()的值从SCHEDULED变为INTACT,然后变为SCHEDULED,然后再次INTACT, 我还尝试添加ProcessingUnitInstanceLifecycleEventListener,当我调试代码时,状态为intact,但该服务不可用!

是否有其他监听器或方法可以知道应用程序(而不是服务)是否可用,或者我以错误的方式使用listener

1 个答案:

答案 0 :(得分:0)

首先,Admin API是内部的 - 使用它需要您自担风险。并且您不应该按照自己的方式使用它 - Cloudify在内部Admin API之上添加了许多逻辑。

其次,从哪里执行代码并不十分清楚。

您始终可以使用其余客户端来获取应用程序的准确状态。看https://github.com/CloudifySource/cloudify/blob/master/rest-client/src/main/java/org/cloudifysource/restclient/RestClient.java#L388

此外,如果您在服务生命周期事件处理程序中运行此代码,实现此目的的最简单方法是让您的' top'级别服务,最后应该可用的服务,在其“postStart”中将应用程序条目写入共享属性存储区。事件。其他人都可以定期轮询此条目。轮询本身非常快,都是内存中的操作。

如果您没有顶级服务,或者您的逻辑比这更复杂,则需要使用服务上下文API扫描每个服务及其实例以查看它们是否已启动。有关获取服务实例状态的说明,请访问: cloudify service dependsOn other service