Назначайте сообщению постоянный client_message_id и повторяйте отправку с тем же ключом, а сервер должен дедуплицировать его атомарно.
Как обеспечить доставку чат-сообщения на сервер без дублей, если сервер долго не отвечает или ответ вообще не пришёл?
Назначайте сообщению постоянный client_message_id и повторяйте отправку с тем же ключом, а сервер должен дедуплицировать его атомарно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Назначайте сообщению постоянный client_message_id и повторяйте отправку с тем же ключом, а сервер должен дедуплицировать его атомарно.
Уникальность связывают с отправителем или диалогом согласно контракту. После таймаута клиент не знает, было ли сообщение сохранено, поэтому повтор не должен создавать новую запись. ACK возвращает серверный id; повторы делают с backoff, а pending-состояние сохраняют до подтверждения.