【问题标题】:How to create Rest API and add time delay to process?如何创建 Rest API 并添加时间延迟来处理?
【发布时间】:2021-03-04 15:05:28
【问题描述】:

我对 Springboot 很陌生。我创建了以下休息 API。如果这个 API 同时接收到多个请求,我希望它一个一个地处理而不丢失任何请求。如果发出多个请求,我希望此服务调用延迟 20 秒。

@RequestMapping({"/create"})
public Response processCreation(@RequestBody(required=false) RequestDTO requestDTO) throws Exception {
    Response response = new Response();
    response=interceptorService.interceptData(requestDTO);
    return response;
}

【问题讨论】:

  • 你的问题很不清楚,你想达到什么不同? 20 秒对于 api 调用来说是一个很大的差距(即使是 5 秒也是如此),无论如何你都不会丢失任何东西。
  • @Aman,我希望收到的所有请求都在队列中并一一处理。我正在使用请求中的数据从我的应用程序中调用另一个 API。我想在 20 秒的时间间隔内调用另一个 API。
  • 如果是这样,您应该有一种方法来维护列表(可能是 LinkedList 或数据库),然后使用每 20 秒运行一次的调度程序对其进行操作。

标签: java multithreading rest threadpool


【解决方案1】:

我认为更好的方法是在代码级别处理这个用例(而不是通过一些 springboot 配置)。

收到请求后,获取所有相关参数并将它们添加到某种队列中。 您将拥有一个线程/线程池,它将从该队列中读取、处理请求并发送响应。

请求线程除了将新任务调度到队列之外什么都不做。处理将由专用线程池/线程进行。

那么你也可以添加你想要的 20 秒延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多