Сравнение с Kafka и RabbitMQ
На платформе представлено несколько сервисов доставки сообщений: DMS for Kafka, DMS for RabbitMQ и DMS for RocketMQ. Ниже приведена сравнительная таблица возможностей Kafka, RabbitMQ и RocketMQ, которая поможет выбрать сервис, наиболее подходящий для ваших задач.
Функциональность | RocketMQ | Kafka | RabbitMQ |
---|---|---|---|
Очереди с приоритетами (priority queue) | Не поддерживает | Не поддерживает | Поддерживает. Рекомендуется устанавливать значение приоритетности от 0 до 10. |
Отложенные очереди (delayed queue) | Поддерживает | Не поддерживает | Не поддерживает |
Очереди недоставленных сообщений (dead letter queue) | Поддерживает | Не поддерживает | Поддерживает |
Повторная отправка сообщений (message retry) | Поддерживает | Не поддерживает | Не поддерживает |
Способ получения сообщений (retrieval mode) | Извлекаются получателем (pull-модель) и отправляются брокером (push-модель) | Извлекаются получателем (pull-модель) | Извлекаются получателем (pull-модель) и отправляются брокером (push-модель) |
Передача сообщения нескольким получателям (message broadcasting) | Поддерживает | Поддерживает | Поддерживает |
Отслеживание сообщений (message tracking) | Поддерживает | Поддерживает отслеживание смещения и временных меток. | Не поддерживает. Как только получение сообщения подтверждается, RabbitMQ получает уведомление о том, что сообщение можно удалить. |
Накопление сообщений (message accumulation) | Поддерживает | Поддерживает. Имеет большую пропускную способность, из-за чего производительнее других систем передачи сообщений. | Поддерживает |
Сохранность сообщений (persistence) | Поддерживает | Поддерживает | Поддерживает |
Трассировка сообщений (message tracing) | Поддерживает | Не поддерживает | Не поддерживает |
Фильтрация сообщений (message filtering) | Поддерживает | Поддерживает | Не поддерживает |
Мультитенантность (multi-tenancy) | Поддерживает | Не поддерживает | Поддерживает |
Поддержка нескольких протоколов (multi-protocol) | Совместим с RocketMQ. | Поддерживает только Apache Kafka. | RabbitMQ основан на протоколе AMQP, также поддерживает протоколы MQTT и STOMP. |
Поддержка нескольких языков (multi-language) | Поддерживает клиенты на нескольких языках программирования. | Kafka написан на Scala и Java и поддерживает клиенты на нескольких языках программирования. | RabbitMQ написан на Erlang и поддерживает клиенты на нескольких языках программирования. |
Троттлинг (throttling) | Поддержка запланирована. | Поддерживает троттлинг как на уровне отправителя и/или получателя, так и за счет собственных механизмов. | Поддерживает троттлинг как на уровне отправителя и/или получателя, так и за счет собственных механизмов. |
Доставка сообщений по порядку (ordered message delivery) | FIFO в пределах очереди | FIFO на уровне партиции | FIFO в пределах очереди |
Безопасность |
|
|
|
Транзакционность (transactional messages) | Поддерживает | Поддерживает | Поддерживает |