Сервис распределенных сообщений (DMS) for RocketMQ — это ориентированное на сообщения промежуточное ПО, обеспечивающее низкую задержку, высокую гибкость, высокую пропускную способность, динамическое масштабирование, простое управление и обширные функции обмена сообщениями.
DMS for RocketMQ имеет следующие функции:
- Совместимость с клиентами RocketMQ с открытым исходным кодом.
- Обширные функции обмена сообщениями, включая упорядоченную доставку сообщений, отложенные сообщения, плановые сообщения, повторную отправку сообщений, сообщения dead letter и транзакционные сообщения, которые удовлетворяют разнообразные потребности в сценариях электронной коммерции и финансов.
- Функции мониторинга и анализа, включая трассировку сообщений, отслеживание сообщений, анализ трассировок, экспорт сообщений dead letter, мониторинг и оповещения, позволяющие вам отслеживать ваши сервисы и поддерживать их работу.
Архитектура продукта
Рисунок 1 Архитектура продукта (экземпляра v4.8.0)

- Брокеры получают и сохраняют сообщения, отправленные продюсерами, либо пересылают сообщения потребителям. Брокер состоит из одного мастера и двух слейв‑узлов.
- NameServers получают и сохраняют метаданные брокера.
- Продюсеры получают метаданные от NameServers и отправляют сообщения брокерам.
- Потребители получают метаданные от NameServers и затем вытягивают сообщения из брокеров.
Типы сообщений
DMS for RocketMQ поддерживает четыре типа сообщений.
- Обычные сообщения: сообщения, не имеющие никаких особенностей отложенных сообщений, упорядоченных сообщений или транзакционных сообщений.
- Отложенные/Запланированные сообщения: сообщения, доставляемые потребителям после определённого периода после отправки продюсерами в DMS for RocketMQ.
- Упорядоченные сообщения: сообщения, извлекаемые в точном порядке их создания.
- Транзакционное сообщение: сообщения, обеспечивающие окончательную согласованность, реализующие распределённую обработку транзакций, аналогичную X/Open XA.
Расширенные возможности
DMS for RocketMQ предоставляет четыре расширенных функции.
- Фильтрация сообщений: Потребители могут помечать сообщения в подписанных темах, чтобы получать только необходимые сообщения.
- Повторная отправка сообщений: DMS for RocketMQ повторно отправляет сообщения, которые не удалось потребить. Если потребление сообщений всё ещё не удаётся после достижения максимального количества повторов, сообщения отправляются в очередь dead letter.
Таблица 1 описывает механизм повторов в DMS for RocketMQ.
Таблица 1 Механизм повторной отправки сообщений | | Максимальное количество повторов |
|---|
| Интервал задаётся suspendTimeMillis параметр. Интервал по умолчанию — 1000 мс, то есть 1 с. | Максимальное количество повторов задаётся setMaxReconsumeTimes метод у потребителя. Если этот параметр не установлен, будет неограниченное количество повторных попыток. |
| Интервал меняется в зависимости от номера повторной попытки, как показано в Таблица 2. | Устанавливается при создании группы потребителей. Диапазон значений: 1–16 раз |
Таблица 2 Интервалы между повторными попытками при обычных извлечениях | | | |
|---|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
- Отложенные сообщения: После того как они отправлены от производителей в DMS для RocketMQ, сообщения доставляются потребителям только после a фиксированный период. Производитель может указать один из 18 уровней задержки, перечисленных в Таблица 3.
Таблица 3 Уровни задержки | | | |
|---|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
- Запланированные сообщения: После отправки от продюсеров в DMS for RocketMQ сообщения доставляются потребителям только после указанного момента времени. DMS for RocketMQ поддерживает планирование сообщений в в любое время. Для v4.8.0, её можно запланировать до года вперёд. Для v5.x, её можно запланировать до семи дней вперёд. Планирование можно отменить.