在休息服务中处理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 (将#修改为@)