Java 限制Rest模板每分钟进行的调用

Java 限制Rest模板每分钟进行的调用,java,spring,spring-mvc,Java,Spring,Spring Mvc,在此处输入代码我正在使用Rest模板成功调用API。然而,我发现API速率限制我每分钟只调用8次,在8次调用后返回429错误。有没有办法限制Rest模板在一分钟内发出的呼叫数 我尝试过使用番石榴依赖性,但没有帮助 我用来调用API的lambda函数的代码片段 responseEntity = object.stream().map(dataFeedInformation -> { try { return restTemplate.exchange(dataFeedInform

在此处输入代码
我正在使用Rest模板成功调用API。然而,我发现API速率限制我每分钟只调用8次,在8次调用后返回429错误。有没有办法限制Rest模板在一分钟内发出的呼叫数

我尝试过使用番石榴依赖性,但没有帮助

我用来调用API的lambda函数的代码片段

responseEntity = object.stream().map(dataFeedInformation -> {
  try {
    return restTemplate.exchange(dataFeedInformation.getDataElement().get(0).getDownloadURL(), HttpMethod.GET,
        dataFeedRestClient.getHttpEntity(), new ParameterizedTypeReference<AccountPlanItemDto>() {
        });
  } catch (Exception e) {
    e.printStackTrace();
  }
  return null;
}).collect(Collectors.toList());
responseEntity=object.stream().map(dataFeedInformation->{
试一试{
返回restTemplate.exchange(dataFeedInformation.getDataElement().get(0).getDownloadURL(),HttpMethod.get,
dataFeedRestClient.getHttpEntity(),新的参数化类型引用(){
});
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}).collect(Collectors.toList());
这是我的解决方案:

while (responseEntityList.size() < listOfDownloadUrls.size()) {
      if (responseEntityList.size() > 0) {
        Thread.sleep(60000);
        numberOfIterations++;
      }
      for (int iterations = numberOfIterations * 20; iterations < (numberOfIterations * 20) + 20; iterations++) {

        if (responseEntityList.size() == listOfDownloadUrls.size()) {
          break;
        }
while(responseEntityList.size()0){
睡眠(60000);
numberOfIterations++;
}
对于(int迭代次数=numberOfIterations*20;迭代次数<(numberOfIterations*20)+20;迭代次数++){
if(responseEntityList.size()==listOfDownloadUrls.size()){
打破
}
这是我的解决方案:

while (responseEntityList.size() < listOfDownloadUrls.size()) {
      if (responseEntityList.size() > 0) {
        Thread.sleep(60000);
        numberOfIterations++;
      }
      for (int iterations = numberOfIterations * 20; iterations < (numberOfIterations * 20) + 20; iterations++) {

        if (responseEntityList.size() == listOfDownloadUrls.size()) {
          break;
        }
while(responseEntityList.size()0){
睡眠(60000);
numberOfIterations++;
}
对于(int迭代次数=numberOfIterations*20;迭代次数<(numberOfIterations*20)+20;迭代次数++){
if(responseEntityList.size()==listOfDownloadUrls.size()){
打破
}

在8次呼叫后,您想让它们排队?或者让它们失败,还可以显示代码吗?如果您粘贴代码会有所帮助。您是否尝试过以不超过8次/分钟的频率进行调度?例如,使用
ScheduledExecutorService
或类似工具?您好,我想将它们存储在ResponseEntity中,即:ListUse thread.sleep(7500)。虽然这不是推荐的解决方案,但线程通过保持锁定来睡眠。如果它对您有效,请尝试。在8次调用后,您想让它们排队?或者让它们失败,还可以显示代码吗?如果您粘贴了代码,这会很有帮助。您是否尝试过使用
ScheduledExecutorService
或类似的fo以不超过8/分钟的频率进行调度例如?嗨,我想将它们存储在responseEntity中,它是:ListUse thread.sleep(7500)。虽然它不推荐作为解决方案,但线程通过持有锁进行睡眠。如果它对您有效,请尝试。