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