Брокер сообщений Message Broker Bus
Зачем
- асинхронное взаимодействие
- 1 Издатель - Х подписчиков
- Буфер запросов
- Очередь задач
Плюсы-минусы
Плюсы
- Масштабируемость
- Гарантированная доставка
- Буферизация
- Слабая связность ИС Low Coupling
- принцип “глупая шина (канал) умные клиенты”
Минусы
- Дополнительный архитектурный слой
- Затраты на мониторинг, настройку, управление
- влияет на общую надежность и безопасность системы
Patterns
- Advanced transient messaging
- ZeroMQ
- Message-oriented persistent - Message Bus
- Транспорт
- RMQ
- ActiveMQ
- Транспорт
- Log-based message queue
- Messaging Patterns
- MS
- Pub\Sub События
- Task (Worker) Queue
- Очереди с приоритетом
- Content-Based Routing
- Filter message
- Dynamic Router
- Splitter
- Dead Leater Channel
- Message Translator
- Wire Tap - наблюдение за сообщениями
- Event Sourcing
- Тип способа получения сообщений
- Pull (по запросу)
- Push (подписка)
- Как узнать когда сообщение в очередь добавлено - Timestamp
Технологии
- Транспорт
- Kafka
- RabbitMQ
- Apache ActiveMQ Artemis
- Azure service bus
- MSMQ
- SQL Server
- Azure Queue Storage
- Azure Service Bus
- Amazon SQS
Критерии выбора
RMQ vs Kafka
- RMQ
- Kafka
- vs RMQ: - сообщения хранятся (так спроектирована), одно и то же сообщение может быть обработано сколько угодно раз разными консьюмерами и в разных контекстах - выше производительность, Kafka легче масштабируется горизонтально - строгая последовательность сообщений - меньше гибкости в роутинге сообщений - нет приоритета сообщений - vendor lock: Kafka использует собственный двоичный протокол поверх TCP. Вы не сможете так просто удалить или заменить эту платформу - транзакции между несколькими топиками
TODO
RMQ vs ActiveMQ Artemis
- RMQ
- Artemis
- vs RMQ
- поддерживает более широкий спектр протоколов обмена сообщениями (+ JMS)
- RMQ имеет наилучшую пропускную способность
- Менее гибкая маршрутизация сообщений
- Artemis Реализует концепцию “адреса” для маршрутизации сообщений и поддерживает различные типы маршрутизации, включая anycast и multicast
- Паттерны: PUB-SUB
- RMQ концепцию “обмена”. Exchange в RabbitMQ - это компонент маршрутизации сообщений, который определяет, как сообщения распределяются по очередям
- Паттерны: Message Queue, PUB-SUB, RPC, Routing
- Artemis Реализует концепцию “адреса” для маршрутизации сообщений и поддерживает различные типы маршрутизации, включая anycast и multicast
- vs RMQ