しかし、AmazonConnectのタイムアウトが最大8秒に制限されているため、タイムアウトしてしまう。
そこで、下記のように、8秒以上かかってしまう処理をスレッドに分けることにした。
スレッドの実行が開始できた時点で、呼び出し元にはOKを返却する。
hoge.java
@Service
public class hogeService {
@Autowired
private ApplicationContext applicationContext;
public hogeReturnDto hogeService(hogeRequestDto request){
// 長い時間のかかる処理でスレッドを作成、実行する
hogeThread thread = new hogeThread(request);
applicationContext.getAutowireCapableBeanFactory().autowireBean(thread);
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(thread);
// 呼び出し元にはOKを返却
ResponseDto responseDto = new ResponseDto();
responseDto.setCode(200);
responseDto.setMessage("OK");
return responseDto;
return;
}
}