#redis #jedis
#redis #jedis
Вопрос:
В настоящее время я ищу эффективное решение для проверки того, что группы потребителей в потоке Redis уже существуют.
У меня есть несколько модулей, которые подключаются к одному и тому же потоку и считывают из него данные. Но они могут начинаться в другом порядке, и в случае, если группы потребителей не созданы — попробуйте создать их. В случае, если первый модуль создал группу, другие получают сообщение об ошибке в соответствии с документацией.
Из документации:
Если указанная группа потребителей уже существует, команда возвращает ошибку -BUSYGROUP .
Я хотел бы избежать этой ошибки.
Я использую клиент Jedis для работы с Redis. Я знаю, что есть XINFO
команда (которая может возвращать список групп), но она не работает, когда Redis был запущен в режиме кластера (что может быть одной из моих настроек).
Ответ №1:
Другого способа нет, как вы указали в своих вопросах, есть два варианта:
XGROUP CREATE
и перехватить ошибку, если группа уже существует.XINFO STREAM
и найдите группу, но она не будет атомарной, и параллельная группа create может быть вызвана сразу после того, как вы получите информацию обратно.
Комментарии:
1. Я открыл проблему, чтобы улучшить это: github.com/redis/redis/issues/9893 . Соответствующее действие в Kafka является идемпотентным и безопасным: docs.confluent.io/platform/current/clients/consumer.html