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

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

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

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

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

спасибо

2 ответов


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


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