MSAL4j - Как обработать исключение MsalThrottlingException?
Я использую MSAL4j, и есть тип исключения с именем MsalThrottlingException. Как я могу справиться с этим, когда поймаю? Мне нужен пример реализации.
try{
Future<IAuthenticationResult> future =
confidentialClientApplication.acquireToken(authorizationCodeParameters);
IAuthenticationResult authenticationResult = future.get(1, TimeUnit.MINUTES);
}
catch(ExecutionException e){
if(e.getCause() instanceof MsalThrottlingException){
//how to handle it
}
}
https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-error-handling-java
Об этом также был документ (вы можете увидеть снимок экрана по ссылке выше), но в нем не приводится пример реализации обработки. Не могли бы вы привести пример?
1 ответ
Это сработало для меня:
private static String PREFIX_RETRY_STR = "com.microsoft.aad.msal4j.MsalThrottlingException: Request was throttled according to instructions from STS. Retry in ";
private static String SUFFIX_RETRY_STR = " ms.";
(...)
if (e.getCause() instanceof MsalThrottlingException) {
int waitTime = Integer.parseInt(e.getMessage().replace(PREFIX_RETRY_STR, "").replace(SUFFIX_RETRY_STR, ""));
try {
TimeUnit.MILLISECONDS.sleep(waitTime);
} catch (InterruptedException interruptedException) {
interruptedException.printStackTrace();
}
result = pca.acquireToken(parameters).join();
} else
throw e;