Мыслишь верно.
У тебя твое приложение в какой то момент принимает решение отправить запрос, вместо этого запроса сразу добавляй его в таблицу очередь, отдельным воркером, пусть даже в этом же приложении с периодичностью запрашиваешь самую старую запись, если вернули не пустой результат, значит делаешь попытку отправить запрос.
Теперь про эти сервера, тебе нужно точно определять, успешно ли запрос отправлен или есть ошибки, проверяй все что вернул сервер, возможно там есть запросы на проверку и т.п. задачу из таблицы очереди удалять только после успешной отправки, можно завести статусы, чтобы можно было мониторить состояние, например перед отправкой запроса ставишь состояние 'отправляется', по окончании менять на 'успешно' (потом или сразу удалять) или 'ошибка' что делать с ошибочными тебе виднее, например повтор через интервал времени (периодически менять статус на 'ожидает отправки' для записей старее этот монтировал времени)