2014-10-10 2 views
0

, когда я использую cloudify (2.7) для развертывания приложения (например, приложение приложения включает в себя две службы A и B), я пытаюсь использовать Admin.addEventListener() для добавления некоторого eventListener, но он не работает!Как узнать приложение?

Я пытаюсь добавить ProcessingUnitStatusChangedEventListener, когда я отладки кода, значение (ProcessingUnitStatusChangedEvent)event.getNewStatus() изменений от SCHEDULED к INTACT, затем SCHEDULED, затем INTACT снова, я также пытаюсь добавить ProcessingUnitInstanceLifecycleEventListener, когда я отладки кода, в статус intact, но услуга недоступна!

Есть ли какой-либо другой слушатель или метод для ознакомления с приложением (а не с услугами), или я использую listener не по-другому?

ответ

0

Во-первых, API-интерфейс 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

 Смежные вопросы

  • Нет связанных вопросов^_^