Может ли группа потребителей Redis гарантировать, что несколько потребителей, работающих параллельно, потребляют разные эксклюзивные подмножества из одного и того же потока?

#redis #redis-streams

Вопрос:

В настоящее время у меня есть поток redis, в котором создано много записей. Я хочу обрабатывать поток параллельно, но убедитесь, что каждая запись обрабатывается только один раз. Я ищу официальный документ о потоке redis. Похоже, что группа потребителей — это одно из решений.

Поэтому я пытаюсь создать одну группу потребителей и позволить нескольким потребителям в этой группе параллельно использовать один и тот же поток(возможно, экземпляры нескольких потребителей на разных серверах или несколько потоков на одном сервере).

Может ли группа потребителей Redis гарантировать, что несколько потребителей, работающих параллельно, потребляют разные эксклюзивные подмножества из одного и того же потока, чтобы убедиться, что каждая запись обрабатывается только один раз? Если это можно гарантировать, для каждого потребителя при чтении из потока xreadgroup group mygroup consumer1 [count 1000] streams mystream > достаточно?

Ответ №1:

ДА. Каждый потребитель в группе считывает взаимоисключающее подмножество записей потока. Каждое сообщение будет обрабатываться одним потребителем — тем, кто его прочитал, — если только оно XCLAIM не отредактировано.

Только один раз — это совсем другое дело. В этом должен убедиться потребитель.

Комментарии:

1. Даже в том случае, если несколько потребителей работают параллельно, по-прежнему гарантируется взаимоисключающее подмножество?

2. Да, в этом, в первую очередь, причина функциональности группы потребителей 🙂