現在、SpringBootでThreadを実行したアプリケーションを作っています。
ログを見る限り、並列実行で業務処理自体は思った様に動いてくれてはいます。
ただ、実際動作させるとHTTPResponseがなかなか返されず、Threadが終わるのを待っている様に感じます。
SpringのControllerで即時レスポンスを返せる、またはデフォルトで内部的にロックが掛かっている等、お分かりになる方いましたら、よろしくお願いいたします。
Java
1Controllerクラス 2 3 @PostMapping(value = "/export", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) 4 @ResponseStatus(HttpStatus.OK) 5 public ResponseEntity<Resource> exportExcel(@RequestBody @Validated MemberSearchParams params) throws IOException, IllegalArgumentException, IllegalAccessException, AuthException { 6 7 logger.info("@一覧検索 開始"); 8 List<Member> memberList = memberService.find(params).getList(); 9 logger.info("@一覧検索 終了"); 10 11 logger.info("@一覧出力 開始"); 12 Supplier<Integer> initValueSupplier = () -> memberService.delayExport(memberList); 13 CompletableFuture<Integer> future = CompletableFuture.supplyAsync(initValueSupplier, executor); 14 logger.info("@一覧出力 終了"); 15 16 // 空を返す 17 return ResponseEntity.status(HttpStatus.ACCEPTED).headers(new HttpHeaders()).body(new ByteArrayResource( new byte[0])); 18 }
code
1■ログ 231 19:02:00.077 @一覧検索 開始 331 19:02:07.321 @一覧検索 終了 431 19:02:07.321 @一覧出力 開始 531 19:02:07.578 @一覧出力 終了
あなたの回答
tips
プレビュー