如何根据条件在 REST-API 调用之间设置等待时间



我必须调用一个返回用户列表及其状态的API。例如:

[
  {"user":"ram",
    "status":"inprogress"
  },
  {"user":"abdullah",
    "status":"inprogress"
  },
  {"user":"jhon",
    "status":"completed"
  },
  {"user":"guru",
    "status":"inprogress"
  }
] 

如果任何用户的状态为"正在进行",则在"(用户数 *2(秒"之后必须再次调用相同的 API。

如果任何租户的状态仍为"正在进行",则必须引发异常

我正在考虑尝试

    wait(number of users *2000) 
        or
   Thread.sleep(number of users *2000) 

除了这两个之外,还有什么最好的方法可以实现它吗?

int no_of_users_status_is_inProgress=0;
ResponseEntity<UserAndStatusData> response=new RestTemplate.exchange(rl,HttpMethod.GET,reqEntity,UserAndStatusData.class,new Object[] {});
'
'
====updating no_of_users_status_is_inProgress====
'
'
if(no_of_users_status_is_inProgress>0){
   wait(no_of_users_status_is_inProgress*2000);
   ResponseEntity<UserAndStatusData> response2=new RestTemplate.exchange(rl,HttpMethod.GET,reqEntity,UserAndStatusData.class,new Object[] {});
   '
   '
   ====updating no_of_users_status_is_inProgress====
   '
   '
   if(no_of_users_status_is_inProgress>0){
      throw customException("timeout");
   }
}

您可以使用java的ScheduledExecutorService,它具有调度方法和设置延迟的选项。ScheduledExecutorService将继续检查用户状态。如果要关闭服务,可以这样做。下面是Javadoc链接:https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

最新更新