Некоторые темы событий поддерживают блокирующие события. Характеристики подписки с поддержкой расширяемости зависят от того, поддерживает ли тема эти типы событий, а также от способа настройки подписки.
В подписках с поддержкой расширяемости Cloud Assembly могут использоваться два основных типа тем событий: темы неблокирующих событий и блокирующих событий. Тип темы события определяет особенности подписки с поддержкой расширяемости.
Темы неблокирующих событий
Темы неблокирующих событий позволяют создавать только неблокирующие подписки. Неблокирующие подписки запускаются асинхронно, поэтому не следует полагаться на порядок их запуска.
Темы блокирующих событий
Некоторый темы событий поддерживают возможность блокировки. Если подписка помечена как блокирующая, никакие другие подписки с соответствующими условиями не получают сообщений, которые соответствуют заданным условиям до тех пор, пока не будет запущен готовый к запуску элемент блокирующей подписки.
Блокирующие подписки запускаются в порядке приоритета. Высший приоритет имеет значение 0. При наличии нескольких блокирующих подписок для одной и той же темы события с одинаковым уровнем приоритета подписки запускаются в обратном алфавитном порядке по имени подписки. После обработки всех блокирующих подписок отправляются одновременные сообщения всем неблокирующим подпискам. Поскольку блокирующие подписки запускаются синхронно, при отправке уведомлений последующим подпискам в измененные полезные данные событий включается обновленное событие.
Темы блокирующего события можно использовать для управления несколькими подписками, которые зависят друг от друга.
Например, могут существовать две подписки на рабочий процесс предоставления, одна из которых зависит от результатов другой. Первая подписка изменяет свойство во время предоставления, а вторая записывает новое свойство, например имя компьютера, в файловую систему. Приоритет подписки ChangeProperty имеет значение 0, а RecordProperty — 1, поскольку вторая подписка использует результаты первой подписки. После предоставления ресурсов для компьютера запускается подписка на процесс ChangeProperty. Так как условия подписки RecordProperty основаны на условии выполнения после предоставления, событие инициирует подписку RecordProperty. Однако поскольку рабочий процесс ChangeProperty является блокирующим, событие не будет получено, пока процесс не будет завершен. После изменения имени компьютера и завершения первой подписки на рабочий процесс запускается вторая подписка на рабочий процесс, и имя компьютера записывается в файловой системе.
Готовый к запуску элемент для восстановления
Для тем блокирующих событий в подписку можно добавить готовый к запуску элемент для восстановления. Готовый к запуску элемент для восстановления в подписке запускается в случае сбоя основного готового к запуску элемента. Например, можно создать подписку на рабочий процесс, где основным готовым к запуску элементом является рабочий процесс, который создает записи в системе CMDB, такой как ServiceNow. Даже если произойдет сбой подписки на рабочий процесс, некоторые записи смогут быть созданы в системе CMDB. В данном сценарии можно использовать готовый к запуску элемент для восстановления, чтобы очистить записи, оставшиеся в системе CMDB из-за сбоя готового к запуску элемента.
Для сценариев использования, содержащих несколько зависимых друг от друга подписок, в готовый к запуску элемент для восстановления можно добавить свойство ebs.recover.continuation. С помощью этого свойства можно указать, должна ли служба расширяемости продолжить работу со следующей подпиской в цепочке в случае сбоя текущей подписки.