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

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