@VladimirKrasnov

Стоит ли использовать Redis как брокер сообщений?

Привет, добрался до изучения брокеров сообщений. Познакомился\попрактиковался с RabbitMQ и kafk'ой и узнал что Redis тоже может быть брокером сообщений. Стоит ли его использовать как брокер? Мб какие нибудь пакеты есть для php\laravel?
  • Вопрос задан
  • 4025 просмотров
Решения вопроса 1
У Redis есть две возможности, имеющие отношение к «сообщениям»:
  1. Pub/Sub – паттерн «издатели/подписчики» – сообщение сразу же, как отправили, доставляется всем подписчикам
  2. Lists – списки – просто структура данных в памяти. В «хвост» добавляются новые задачу, рабочие разбирают задачи из «головы».


Redis Pub/Sub – это доставка сообщений в (почти) реальном времени, но никак не очередь сообщений. Пропустили сообщение, не приняли, подписались позже — не в курсе того, что было. Laravel, разумеется, работает с Redis PubSub.

Redis Lists можно использовать как хранилище для очередей задач – с командой блокирующего чтения (напр. BLPOP) это больше похоже на *.MessageQueue. См. очереди в Laravel. Команда Redis BLPOP – блокирующая, ждёт появления в списке нового элемента и эксклюзивно его выхватывает. Можно несколько «рабочих» процессов подвесить к одному Redis'у. Будут висеть и ждать появления задач. Кто-то из них получит очередную задачу и займётся её обработкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit
Точу водой камень
Стоит ли его использовать как брокер?

Я бы рассматривал 2 варианта:
1) Pub/Sub (о нем уже писали выше) - он особо ничего не гарантирует и не хранит сообщения, если в моменте подписчику не удалось его получить, то уже никогда и не удастся.
2) Redis Streams (начиная с версии 5.0) это уже ближе к брокерам сообщений, но не полноценный, а скорее набор команд из которых вы можете собрать свой брокер сообщений. Заявлена некая персистентность за счет репликации между репликами, дампов данных на диск и ведения журнала всех операций записи. Насколько это надежно, непонятно, не слышал чтобы кто-то использовал Redis как надежное хранилище данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы