首页 > 其他 > 详细

AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS

时间:2019-08-09 18:20:45      阅读:55      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/cloudrivers/p/11328875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!