Назначайте уведомлению стабильный ключ по бизнес-событию, получателю, каналу и типу сообщения. Уникальное ограничение и сохранённое состояние доставки защищают от повторной обработки.
Как достигать идемпотентности в системе нотификаций?
Назначайте уведомлению стабильный ключ по бизнес-событию, получателю, каналу и типу сообщения. Уникальное ограничение и сохранённое состояние доставки защищают от повторной обработки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Назначайте уведомлению стабильный ключ по бизнес-событию, получателю, каналу и типу сообщения. Уникальное ограничение и сохранённое состояние доставки защищают от повторной обработки.
Outbox связывает создание события с бизнес-транзакцией, а worker забирает его с lease/lock и допускает retry. Если провайдер поддерживает idempotency key, передавайте тот же ключ при повторах. Иначе сбой после внешней отправки, но до записи результата оставляет неопределённость: полной гарантии exactly-once нет. Проверяйте статус у провайдера и не путайте дедупликацию события с запретом законных повторных уведомлений по новым событиям.