Вы неправильно поняли: в SQS включены повторные попытки.
Чтобы проверить: попробуйте следующее:
$sqsClient = new sqqClient('2012-11-05', ['retries' => 2]);
$startTime = time();
try {
$sqsClient->receiveMessages(['WaitTimeSeconds' => 5]);
} catch(Exception $e) {
}
$timeTaken = time() - $startTime;
echo $timeTaken;
и не отправлять никаких сообщений. Вот увидишь
10
как это #WaitTime * #retries
Если вы не получаете сообщений, это считается ошибкой, и вы попытаетесь получить их снова.
S3 и DynamoDB имеют особые случаи — это то, что вы заметили.
Редактировать:
Это работает: взлом кода AWS.
class final class Middleware
{
public static function retry(
callable $decider = null,
callable $delay = null,
$stats = false
) {
echo 'Forcing retries to false';
$decider = function() {return false;};
...
Это не так: в моем коде.
$decider = function() {
echo 'No retries';
return false;
};
$client->getHandlerList()->appendSign(\AWS\Middleware::retry($decider, null), 'retry');
person
Robbie
schedule
07.07.2018