Я вас правильно понял? А зачем?
Чтобы не поднимать контейнер с редисом, думал, что хватит кролика. Вощем, убрал эту очередь, заменил на комбинацию rpush/blpop и все ок
Я все равно не понял, если сообщение обработано, зачем его рекьюить? Или я совсем не понимаю что вы пытаетесь сделать, или вы совсем не понимаете что делает кролик
В очереди набор ресурсов, unacked сообщение это "заблокированный" ресурс, nack разблокировка
Так у редиса есть нормальные инструменты для локов.
Редис я в итоге и взял
Но вы все равно используете не то, что надо.
Почему? Мне нужна как раз очередь, ресурсы должны блокироваться последовательно
Да не очередь это. Обычные локи.
Вы можете последовательно в очереди блокировать только голову очереди, которая будет всегда одна
И на каждый ресурс отдельный ключ заводить? Я не знаю, сколько ресурсов, их может быть 10, а может быть 10к
10к ключей где угодно это вообще ниочем
Опишите задачу для начала.
Я не хочу их менеджерить, если могу тащить из очереди по одному
Что такое ресурс? Ссылка?
А в чем проблема с nack? Сообщение вернётся в очередь, не понимаю
Что вы делаете с этой ссылкой?
Использую, после использования она должна быть доступна для следующей задачи
Проблема в том, что кролик это очередь, а не хранилище. Сообщение обработано успешно - его надо удалять. Как только в вашей очереди будет достаточно много сообщений или обработка будет достаточно быстрой, вы начнете буксовать на месте и не сможете добраться до хвоста.
А задачи строго последовательные по ссылкам или можно параллельно?
Можно как угодно, главное чтобы был лимит на использование ресурса
При удалении, нужно будет снова отправить в очередь, на этом может отвалиться воркер раньше, чем вернёт
Не надо удалять. Вы знаете заранее, сколько действий со ссылкой надо сделать?
Не знаю и не знаю, сколько это займёт времени
Ну можете в двух словах рассказать, что за сервис хоть? Кажется, что кролик подойдет, но не хватает информации.
При удалении чего? Обработали сообщение - удалите его из очереди, не надо туда ничего добавлять. Еще раз, очередь это не хранилище, если вам надо хранить ресурсы и иметь к ним доступ - делайте это в хранилищах, в базах данных, в кешах, в чем там еще.
Неизвестное кол-во токенов, лимитирую так кол-во запросов по одному токену
если ресурсы однородные и таки хочется кролик, тогда так: две очереди: свободные ресурсы и занятые, вместо того, чтобы держать ресурсы - идёт перекладывание сообщений туда сюда. Из минусов: состояние будет довольно часто отличаться от реальности и нужен внешний механизм проверки
Вы опять про решение говорите, скажите что вы делаете вообще?
Не вижу принципиальной проблемы
Это детали бизнес процесса
Да, они нам и нужны, чтобы дать хороший совет
Думал о двух очередях, показалось, что усложнять на ровном месте не имеет смыслп
Спасибо, вы уже помогли, не буду использовать кролик таким образом
Обсуждают сегодня