0

cloudify(2.7) を使用してアプリケーションをデプロイする場合 (たとえば、アプリケーション アプリに 2 つのサービス A と B が含まれる場合)、 を使用しAdmin.addEventListener()て eventListener を追加しようとしましたが、機能しません。

を追加しようとしましたが、ProcessingUnitStatusChangedEventListenerコードをデバッグすると、値が からに(ProcessingUnitStatusChangedEvent)event.getNewStatus()変わります。次に、コードをデバッグすると、ステータスはになりますが、サービスは利用できません!SCHEDULEDINTACTSCHEDULEDINTACTProcessingUnitInstanceLifecycleEventListenerintact

アプリケーション(サービスではない)が利用可能であることを知るための他のリスナーまたはメソッドはありますか、それともlistener間違った方法で使用していますか?

4

1 に答える 1

0

まず、管理 API は内部的なものです。ご自身の責任で使用してください。Cloudify は内部管理 API の上に多くのロジックを追加します。

第二に、どこからコードを実行しているかが明確ではありません。

レスト クライアントをいつでも使用して、アプリケーションの正確な状態を取得できます。https://github.com/CloudifySource/cloudify/blob/master/rest-client/src/main/java/org/cloudifysource/restclient/RestClient.java#L388を見てください。

さらに、このコードをサービス ライフサイクル イベント ハンドラーで実行している場合、これを実装する最も簡単な方法は、「最上位」レベルのサービス (最後に利用可能にする必要があるサービス) にアプリケーション エントリを共有属性ストアに書き込むことです。その「postStart」イベント。他のすべての人は、このエントリを定期的にポーリングできます。ポーリング自体は非常に高速で、すべてメモリ内操作です。

トップレベルのサービスがない場合、またはロジックがそれよりも複雑な場合は、サービス コンテキスト API を使用して各サービスとそのインスタンスをスキャンし、それらが稼働しているかどうかを確認する必要があります。サービス インスタンスの状態を取得する方法については、こちらをご覧ください: cloudify service dependsOn other service

于 2014-10-12T07:26:12.413 に答える