Сегодня мы хотели бы поделиться новым подключаемым модулем шины событий (Event Bus) – гибридной шиной событий, который объединяет в себе шины событий inMemory – для обработки событий внутри CloudStack, и Kafka или RabbitMQ – для взаимодействия с внешними обработчиками.
Мы используем Kafka Event Bus в наших установках CloudStack. Недавно, после начала тестирования нового подключаемого модуля в продуктовой среде, мы обнаружили, что у этой шины нет функциональности подписки на события: внутренние приемники событий не могут подписываться на события, поскольку просто отсутствует реализация.
Это довольно неприятная вещь, поскольку она ограничивает API CloudStack. Практически невозможно прогнозировать, кто хотел бы подписаться на события даже внутри ядра CloudStack, например, для осуществления отложенной обработки. Используя стандартную Kafka Event Bus, часть возможностей шины событий перестает быть доступна, и обнаружение данной регрессии весьма затруднительно. Чтобы преодолеть это, мы реализовали «гибридную» шину, которая использует шину inMemory для внутренних целей и шины Kafka или RabbitMQ для внешних коммуникаций.
Вы можете найти расширение на GitHub. Лицензия: Apache 2