Я прочитал из вашего Q, что B распознает следующий вызов как дубликат, хотя тайм-аут произошел. Во-первых, не полагайтесь на него как на успех. Я бы предпочел посмотреть, где это состояние поддерживается? Как долго оно хранится, в случае тайм-аута либо это состояние может быть освобождено, либо должна быть запущена проверка от А до В, чтобы узнать, была ли эта транзакция действительно успешной? Например, информация о клиенте A Posts, время ожидания B. Теперь, прежде чем повторить попытку, вызовите getCustomerInfo (cusomerName, customerId, x, y, z, ...), чтобы убедиться в том, что, несмотря на истечение времени ожидания, публикация прошла успешно в конце.
Кроме того, вы, возможно, захотите сделать глубокое погружение, чтобы узнать, какова длительность удержания, состояние дублированного идентификатора в B, и можете ли вы работать с командой B, чтобы это было выпущено раньше, чтобы продолжить. ?
Я также вижу возможность поставить эту хореографию между командами микросервисов A и B, и в таких случаях служба очередей может оказаться очень полезной (только если это часто встречающаяся ситуация).