Несколько подсистем должны обрабатывать одни и те же события
Обработка в режиме реального времени с минимальной задержкой
Обработка сложных событий, например, поиск закономерностей или агрегирование данных по временным интервалам
Большие объемы и высокая скорость поступления данных (характерно, например, для интернета вещей — IoT)
Background Jobs: Sending background messages, emails, or notifications to loads of users.
Асинхронный обмен сообщениями: Очереди сообщений — лучший способ реализации асинхронного программирования.
Большое время отклика: Ситуации, когда время выполнения запроса оказывается слишком долгим (например, при выполнении вычислений, поиске, создании PDF-файлов и т. д.).
Это позволяет производителям событий создавать события, не зная о том, кто будет потреблять эти события
Потребители событий не должны знать об источниках событий
Модули, потребляющие события, и модули, создающие события, могут быть реализованы на разных языках или использовать разные технологии, подходящие для конкретных задач
Подсистемы получают независимые представления потока событий
Отправители и получатели независимы друг от друга
Нет интеграции “точка — точка”. Очень легко добавлять в систему новые объекты-получатели
для этого таймметка и ключ идемпотентности и порядок обработки на стороне ИС потребителя реализовать
или Kafka
Асинхронный обмен сообщениями и итоговая согласованность
Управляемость
Взаимодействие между службами
Гарантированная доставка
Сложность реализации
Сложность тестирования
Паттерны
две топологии
Топология «посредник» (mediator topology) часто применяется в тех случаях, когда необходимо обеспечить оркестрацию нескольких этапов обработки события посредством центрального посредника.
broker topology (хореография) is used when you want to chain events together without the use of a central mediator