如何解决在休息服务中处理100多个请求时,禁止403来
在休息服务中处理多个请求(超过100个)时,我面临403个禁止的问题。使用@Async和CompletableFuture在我的服务中处理批量请求。
这是我的Main类,其中准备请求并获得响应。
@Async("customAsyncTaskExecutor")
public CompletableFuture < String > getLoanReviewAPIDetail() {
for (int i = 0; i < 200; ++i) {
ReviewRenewalRequestVO reviewRenewalRequestMO = new ReviewRenewalRequestVO();
reviewRenewalRequestMO.setEffectiveDate(this.effectiveDate);
reviewRenewalRequestMO.setRevisedSanctionedAmount(revisedSanctionAmount.add(BigDecimal.valueOf(i)));
HttpEntity < ReviewRenewalRequestVO > requestEntity = new HttpEntity < > (reviewRenewalRequestMO,headers);
BaseLoggers.flowLogger
.debug("Thread-name {}",Thread.currentThread().getName());
responseEntity = restTemplate.exchange(intgUrl,HttpMethod.POST,requestEntity,PayloadMO.class,new Object[0]);
if (responseEntity != null)
finalResponse = gson.toJson(responseEntity.getBody());
}
return CompletableFuture.completedFuture(finalResponse);
}
这是threadpoolexecutor-的配置类-
@Configuration
@EnableAsync
public class AsyncConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(AsyncConfiguration.class);
@Bean(name = "customAsyncTaskExecutor")
public Executor taskExecutor() {
BaseLoggers.flowLogger.debug("Creating Async Task Executor",LOGGER);
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(20);
executor.setMaxPoolSize(1000);
executor.setQueueCapacity(1000);
executor.setThreadNamePrefix("Threads-");
executor.initialize();
return executor;
}
}
日志是
java.util.concurrent.CompletionException: org.springframework.web.client.HttpClientErrorException: 403 Forbidden at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.lambda$doSubmit$0(AsyncExecutionAspectSupport.java:273) ~[spring-aop-5.0.7.RELEASE.jar:5.0.7.RELEASE]
at org.springframework.aop.interceptor.AsyncExecutionAspectSupport$$Lambda$142/718818764.get(Unknown Source) ~[na:na]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1582) ~[na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
Caused by: org.springframework.web.client.HttpClientErrorException: 403 Forbidden at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。