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

Описание архитектуры:
- Брокеры получают и сохраняют сообщения, отправленные продюсерами, или пересылают сообщения потребителям. Брокер состоит из одного мастера и двух слейв‑узлов.
- NameServers получают и сохраняют метаданные брокеров.
- Продюсеры получают метаданные от NameServers и отправляют сообщения брокерам.
- Потребители получают метаданные от NameServers и затем извлекают сообщения из брокеров.
Типы сообщений
DMS for RocketMQ поддерживает четыре типа сообщений.
- Обычные сообщения: Сообщения, которые не имеют функций отложенных сообщений, упорядоченных сообщений или транзакционных сообщений.
- Отложенные/Запланированные сообщения: Сообщения, которые доставляются потребителям после определённого периода после отправки от продюсеров в DMS for RocketMQ.
- Упорядоченные сообщения: Сообщения, которые извлекаются в точном порядке их создания.
- Транзакционное сообщение: Сообщения, обеспечивающие окончательную согласованность, предоставляющие распределённую обработку транзакций, аналогичную X/Open XA.
Расширенные функции
DMS for RocketMQ предоставляет четыре расширенные функции.
- Message filtering: Потребители могут помечать сообщения в подписанных темах, чтобы извлекать только необходимые сообщения.
- Message retry: DMS for RocketMQ повторно отправляет сообщения, которые не удалось потребить. Если потребление сообщения всё ещё не удаётся после достижения максимального количества повторных попыток, сообщения отправляются в очередь dead letter queue.
Table 1 описывает механизм повторных попыток в DMS for RocketMQ.
Table 1 Механизм повторных попыток
Table 2 Интервалы между повторными попытками при обычном извлечении
- Отложенные сообщения: после отправки от производителей в DMS для RocketMQ сообщения доставляются потребителям только после фиксированного периода. Производитель может указать восемнадцать уровней задержки. Table 3 перечисляет время на каждом уровне.
- Запланированные сообщения: После отправки от продюсеров в DMS for RocketMQ сообщения доставляются потребителям только после указанного момента времени. DMS for RocketMQ позволяет планировать сообщения на любое будущее время с ограничением в один год для версии v4.8.0 и семь дней для версии v5.x Планирование можно отменить.