gpt4 book ai didi

Java Rest api 需要等待才能处理

转载 作者:行者123 更新时间:2023-11-30 06:30:47 25 4
gpt4 key购买 nike

我有一个 Java Rest API,物联网设备将使用它来发送数据。每个设备都有一个时间段(比如 15 秒)与 API 进行通信。在该时间段内,可以有多个具有相同数据集的消息。

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

我应该使用什么来收集和处理给定时间段内的消息?

谢谢。

编辑使用 Spring Boot。

最佳答案

您应该尝试使用异步端点来调用同步 REST。您可以定义达到超时后要执行的操作。

例如,在 Spring Boot 中,您可以返回 Callable 并使用 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);

}
}

您可能需要在 Spring 中为任务执行器线程池添加一些配置:

@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);
}
};
}

}

这里还有更多内容需要阅读:

关于Java Rest api 需要等待才能处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46177268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com