# 🔬 Очередь задач: своя таблица или готовая библиотека - **Тип:** research - **Категория:** Очередь - **Зачем:** Очередь написана вручную: захват двумя запросами без транзакции, протухание временем, опрос раз в секунду вхолостую тремя воркерами. Сегодняшняя очередь — принцип «очередь таблицей» из [architecture.md](../../docs/architecture.md) плюс `FindAndAcquire` в репозитории. Работает она на единицах записей в день, но написана целиком своими руками, и вот чего в ней нет: - **захват не транзакционен** — `UPDATE` проставляет `acquisition_id`, отдельный `SELECT` читает строку по нему; сегодня это безопасно только потому, что три воркера читают три разных состояния и одну строку не делят; - **повторов с нарастающей паузой нет** — задача либо повторяется каждую секунду, либо ждёт истечения захвата целый час; - **число попыток не считается** — задача, падающая всегда, падает вечно; - **опрос вхолостую** — три воркера дёргают базу раз в секунду независимо от того, есть ли работа; - **очереди мёртвых задач нет** — `is_error = 1` исключает запись из выборки навсегда и молча. Разведка идёт **перед** `pocketbase-storage`: смена хранилища перепишет захват задачи в любом случае, и переписывать его дважды незачем. ## Вопрос Берём ли готовую очередь на Go поверх той же базы, и если да — какую, или оставляем свою таблицу, дописав к ней повторы, счётчик попыток и очередь мёртвых задач. ## Куда ляжет ответ `docs/research/job-queue.md` — сравнение кандидатов с числами: зависимости, какая база нужна, переживает ли перезапуск, есть ли повторы и очередь мёртвых задач. Решение и причина отказа от остальных — в `docs/adr/`: принцип «очередь таблицей» записан в архитектуре, и его пересмотр обратной правкой не откатывается. Следом правится раздел «Принципы» в [architecture.md](../../docs/architecture.md). ## Рамки Внешнего брокера (Redis, RabbitMQ, NATS) не рассматриваем: он добавляет к выкладке процесс, которого там нет, ради нагрузки в единицы записей в день. Кандидаты — библиотеки, работающие поверх той же встроенной базы. Ответ обязан учесть, что хранилище скоро сменится на PocketBase.