Конкурирующий потребитель на Redis Pub / Sub поддерживается? - PullRequest
25 голосов
/ 25 августа 2011

У меня есть 2 услуги. Им обоим нужно подписаться на один и тот же канал.

2 услуги сбалансированы по нагрузке. Каждый сервис работает на нескольких серверах.

Так как я могу быть уверен, что только 1 экземпляр каждой службы потребляет сообщение этого канала.

Поддерживается ли это в Redis?

Спасибо

Ответы [ 2 ]

29 голосов
/ 26 августа 2011

Другой подход заключается в использовании B*POP из ваших экземпляров службы.Если у вас много клиентов, запускающих B*POP для списка, всякий раз, когда вы LPUSH используете его, один из этих клиентов получит данные, но только один.

29 голосов
/ 26 августа 2011

Pubsub не работает таким образом - сообщение отправляется всем подключенным подписанным клиентам.Однако вы можете настроить его так, чтобы канал был уведомлением об обновлении списка.Таким образом, все клиенты получат сообщение, но только один может извлечь элемент из списка с помощью LPOP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...