非同期エンドポイントを使用して、同期RESTを呼び出すようにしてください。タイムアウトに達すると、何をすべきかを定義することができます。
例えば、春ブーツにあなたが呼び出し可能に返すとの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);
}
};
}
}
ここ
が読みよりです:
これを実行します。 ありがとう:) –
私は春のブートを使用していることを忘れてしまった。 私も自分の質問を更新しました。 –
@ mumbo_s5これがあなたが必要としているものであることを確認してください – sebadagostino