Для POST-запросов клиент генерирует уникальный ключ (Idempotency-Key: uuid) и отправляет его в заголовке. Сервер сохраняет результат под этим ключом: если придёт повторный запрос — вернёт сохранённый результат без повторной обработки. Stripe, Twilio и другие платёжные API требуют этого.
Воркер должен быть готов получить одно и то же сообщение дважды (at-least-once delivery). Сохраняйте обработанные ID и проверяйте перед обработкой.