Вторая половина работы — прозрачность процесса. Требуется панель наблюдения, отражающая происходящее вживую: интенсивность обработки по каждой очереди, число завершённых и упавших заданий, текущее наполнение очереди с разбивкой на ожидающие и выполняемые, а также типичное и максимальное время выполнения. По упавшему заданию я должен видеть текст ошибки, переданные данные и всю цепочку повторов, а также одним нажатием возвращать его на повторную обработку. Панель должна давать возможность останавливать очередь, плавно выводить обработчики из работы и просматривать отложенные задания до их старта. Сразу оговорю рамки: это не интерфейс планировщика для запуска периодических задач и не шлюз пересылки вебхуков. Суть — именно асинхронная обработка через обработчиков и глубокая наблюдаемость над ней.
Ожидаю обоснованное предложение по хранилищу заданий. Для меня важны гарантия выполнения не менее одного раза, защита при одновременной работе нескольких обработчиков, исключающая двойную обработку одного задания, и корректное завершение работы при выкатке новой версии. Итог — проверенный код с внятной инструкцией по установке, чтобы команда могла запустить систему и дальше её развивать.
— Именованные очереди с пулами обработчиков и регулируемой параллельностью
— Повторы с нарастающими интервалами и хранилище невыполненных заданий
— Отложенные и запланированные задания, доступные к назначенному времени
— Живая панель: интенсивность, сбои, наполнение очередей, задержки
— Ручной перезапуск задания, пауза очереди и плавный вывод обработчиков