当前位置: 首页 > 知识库问答 >
问题:

使用Spring Boot的多个REST调用

慕麒
2023-03-14

我正在尝试使用Spring Boot对API进行500次REST调用(POST)。目前,我正在使用线程池,使用可调用的执行器服务,因为我还需要POST调用的响应。在Spring Boot中有没有更有效的方法来实现这一点?编辑-这是一项IO密集型任务

共有1个答案

鲜于意
2023-03-14

您可以简单地使用WebClient,因为它在设计上是无阻塞的。

参见例如:https://newbedev.com/springboot-how-to-use-webclient-instead-of-resttemplate-for-performing-non-blocking-and-asynchronous-calls但网上还有很多其他资源。

但是...如果您使用的是RestTemboard:

@Service
public class AsyncService {

    private final RestTemplate restTemplate;

    public AsyncService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @Async
    public CompletableFuture<ResponseDto[]> callAsync(RequestDto requestDto) {
        ResponseDto[] responseDtos = restTemplate.postForObject("someUrl", requestDto, ResponseDto[].class);
        
        return CompletableFuture.completedFuture(responseDtos);
    }
}

然后,您可以使用标准的Java Future机制简单地循环来自任何适合您的上下文的地方的所有请求。

只需确保在应用程序中添加@EnableAsync

可以在此处找到更详细的教程:https://spring.io/guides/gs/async-method/

 类似资料:
  • 我试图通过使用简单的json数据源调用SpringRESTAPI来生成grafana仪表板。实现了启用简单json数据源所需的所有API(/、/search、/query),并按照grafana simple json数据源的预期维护了合同。 此外,还添加了CORS作为响应头的一部分,甚至通过在****@RestController**添加@CrossOrigin来启用请求API的CORS。 当我

  • 通过io的requestAbs方法调用/调用/使用REST API的vertx实现。vertx。果心http。vertx-core-3.2.0中的HttpClient类。jar导致HTTP错误::302,响应数据为HTML Erro响应。 不确定requestAbs方法的行为,因为没有引发异常,也没有写入任何日志。此外,还随附了使用vertx JAR的此方法的源代码。如果方法实现有bug,是否有问

  • 我想调度多个任务使用@调度注释使用cron表达式。我有三项工作需要在固定时间执行。例如,作业-1被安排在每天晚上11点,作业-2被安排在每天早上7点到晚上9点,间隔1小时,作业-3被安排在每1小时。所有3个计划任务都是同一应用程序的一部分。 我也尝试过同样的方法,但所有三个调度都没有发生。我的应用程序是SpringBoot应用程序。我不是新的调度。请帮帮我。下面是他我的方法 application

  • 我需要在Springboot中实现多线程,同时使用POST方法调用API。我根据一个SELECT查询从oracle数据库中提取记录,然后使用行映射器逐个遍历每个记录。在下一步中,我只调用一个方法将这些记录发送到API,以postmapping的形式发送这些记录并取回记录。 因为select查询一次可以返回10、20或100条记录。逐个调用每条记录并不理想。我在想我是否可以一次发送多个记录。我不知道

  • 尝试使用springboot MVC和Thymeleaf访问POST方法中的多个对象。 这是控制器。 下面是这些观点: patient.html 和result.html 和bean类是:PatientDataModel.java 另一个bean: 现在,问题是,我需要这两个bean在GET和POST方法中都可以访问。当我运行代码时,它正在执行,但是bean没有值,所有值都是空的。请建议