Java REST API需要等待才能处理



我有一个Java REST API,该API将由IoT设备用于发送数据。每个设备都有一个时间段(例如15秒)与API通信。在那段时间内,可以有多个带有相同数据的消息。

我想做的是,当API从设备接收新消息时,它会等到时间段结束并收集收到的消息。并仅在时间段结束时处理消息。

我应该在给定时间段内收集和处理消息?

谢谢。

编辑使用Spring Boot。

您应该尝试使用异步端点来呼叫syncronous rets。您可以定义超时后的操作。

例如,在Spring Boot中,您可以返回可可并使用taskexecutor:

@Controller
public class MyController {
    @RequestMapping("/endpoint") 
    public @ResponseBody WebAsyncTask<String> handleRequest (HttpServletRequest request) {
        Callable<String> callable = () -> {
            return "Callable";
        };
        ConcurrentTaskExecutor taskExecutor = new ConcurrentTaskExecutor(Executors.newFixedThreadPool(1));
        return new WebAsyncTask<>(15000L, taskExecutor, callable);
    }
}

您可能需要在弹簧中添加一些配置,以使任务执行人线程池:

@SpringBootApplication
public class AsyncConfigExample {
    @Bean
    WebMvcConfigurer configurer(){
        return new WebMvcConfigurerAdapter(){
            @Override
            public void configureAsyncSupport (AsyncSupportConfigurer configurer) {
                ThreadPoolTaskExecutor t = new ThreadPoolTaskExecutor();
                t.setCorePoolSize(10);
                t.setMaxPoolSize(100);
                t.setQueueCapacity(50);
                t.setAllowCoreThreadTimeOut(true);
                t.setKeepAliveSeconds(120);
                t.initialize();
                configurer.setTaskExecutor(t);
            }
        };
    }
}

这里更多地阅读:

  • Spring MVC:配置异步请求处理
  • 春季启动:用队列备份的异步方法

相关内容

  • 没有找到相关文章

最新更新