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 Механизм повторных попыток Retrieval Type | Retry Interval | Maximum Retries |
|---|
Ordered retrieval | Интервал задаётся параметром suspendTimeMillis. Интервал по умолчанию составляет 1000 мс, то есть 1 с. | Максимальное количество повторных попыток задаётся методом setMaxReconsumeTimes у потребителя. Если этот параметр не установлен, количество повторных попыток будет неограниченным. |
Обычное извлечение | Интервал зависит от номера попытки, как показано в Table 2. | Устанавливается при создании группы потребителей. Диапазон значений: 1–16 раз |
Table 2 Интервалы между повторными попытками при обычном извлечении Номер попытки | Интервал | Номер попытки | Интервал |
|---|
1 | 10s | 9 | 7 min |
2 | 30s | 10 | 8 min |
3 | 1 мин | 11 | 9 мин |
4 | 2 мин | 12 | 10 мин |
5 | 3 мин | 13 | 20 мин |
6 | 4 мин | 14 | 30 мин |
7 | 5 мин | 15 | 1 ч |
8 | 6 мин | 16 | 2 ч |
- Отложенные сообщения: после отправки от производителей в DMS для RocketMQ сообщения доставляются потребителям только после фиксированного периода. Производитель может указать восемнадцать уровней задержки. Table 3 перечисляет время на каждом уровне.
Table 3 Уровни задержки Уровень задержки | Delay | Delay Level | Delay |
|---|
1 | 1s | 10 | 6 min |
2 | 5s | 11 | 7 min |
3 | 10s | 12 | 8 min |
4 | 30s | 13 | 9 min |
5 | 1 min | 14 | 10 min |
6 | 2 min | 15 | 20 min |
7 | 3 мин | 16 | 30 мин |
8 | 4 мин | 17 | 1 ч |
9 | 5 мин | 18 | 2 ч |
- Запланированные сообщения: После отправки от продюсеров в DMS for RocketMQ сообщения доставляются потребителям только после указанного момента времени. DMS for RocketMQ позволяет планировать сообщения на любое будущее время с ограничением в один год для версии v4.8.0 и семь дней для версии v5.x Планирование можно отменить.