AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS
Posted cloudrivers
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS相关的知识,希望对你有一定的参考价值。
AWS 中的错误重试和指数退避
Error Retries and Exponential Backoff in AWS
Do some asynchronous operation.
retries = 0
DO
wait for (2^retries * 100) milliseconds
status = Get the result of the asynchronous operation.
IF status = SUCCESS
retry = false
ELSE IF status = NOT_READY
retry = true
ELSE IF status = THROTTLED
retry = true
ELSE
Some other error occurred, so stop calling the API.
retry = false
END IF
retries = retries + 1
WHILE (retry AND (retries < MAX_RETRIES))
===============================
public enum Results
SUCCESS,
NOT_READY,
THROTTLED,
SERVER_ERROR
/*
* Performs an asynchronous operation, then polls for the result of the
* operation using an incremental delay.
*/
public static void doOperationAndWaitForResult()
try
// Do some asynchronous operation.
long token = asyncOperation();
int retries = 0;
boolean retry = false;
do
long waitTime = Math.min(getWaitTimeExp(retries), MAX_WAIT_INTERVAL);
System.out.print(waitTime + "\n");
// Wait for the result.
Thread.sleep(waitTime);
// Get the result of the asynchronous operation.
Results result = getAsyncOperationResult(token);
if (Results.SUCCESS == result)
retry = false;
else if (Results.NOT_READY == result)
retry = true;
else if (Results.THROTTLED == result)
retry = true;
else if (Results.SERVER_ERROR == result)
retry = true;
else
// Some other error occurred, so stop calling the API.
retry = false;
while (retry && (retries++ < MAX_RETRIES));
catch (Exception ex)
/*
* Returns the next wait interval, in milliseconds, using an exponential
* backoff algorithm.
*/
public static long getWaitTimeExp(int retryCount)
long waitTime = ((long) Math.pow(2, retryCount) * 100L);
return waitTime;
以上是关于AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS的主要内容,如果未能解决你的问题,请参考以下文章