как одновременно написать весенний boot rest api big json ответ на файл - PullRequest
0 голосов
/ 10 декабря 2018

Я создавал приложение для переноса данных, которое будет извлекать данные из базы данных mysql в формате json.Затем я отправлю этот большой ответ JSON на mongodb.Я умею выполнять обе части.Но получение данных из mysql занимает слишком много времени из-за обилия данных.Поэтому я подумал, могу ли я записать / добавить этот поток данных обратно в какой-либо файл синхронно.Ниже приведен мой код, т.е. ПОЛУЧИТЕ остальные API для извлечения данных:

@GetMapping(value = "data/cdr/daterange", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<CoreResponseHandler> getCdrData(@RequestParam(value="from",required=true)String from,@RequestParam(value="to",required=true)String to){
    String temp_from=from;
    String temp_to=to;
    MainJson mainJson = null; // a class that accumulates all objects together
    if((from!=null && !from.isEmpty())&&(to!=null && !to.isEmpty()))
    from = from + " 00:00:00";
    to = to + " 23:59:59";
    List<CdrCustom> listCdr = cdrService.getAllRecords(from,to);
    List<HssCustom> listHss = hssLogsService.getAllRecords(from, to);
    List<CallsCustom> listCalls=crbtLogsService.getAllRecords(from, to);


    boolean flag = commonsUtility.checkDates(temp_from,temp_to);
    if(flag) {
        List<String> list = commonsUtility.datesList(temp_from,temp_to);
        mainJson = commonsUtility.makeJson(listCalls,listHss,listCdr,list);
        if(mainJson!=null && mainJson.getDataDump().get(0).get_id()!=null && !mainJson.getDataDump().get(0).get_id().equals("")) {
            return new ResponseEntity<CoreResponseHandler>(new SuccessResponseBeanRefined(HttpStatus.OK, ResponseStatusEnum.SUCCESSFUL, ApplicationResponse.SUCCESSFUL, mainJson),HttpStatus.OK);               
        }
        else {
            return new ResponseEntity<CoreResponseHandler>(new SuccessResponseBeanRefined(HttpStatus.NOT_FOUND, ResponseStatusEnum.FAILED, ApplicationResponse.Failed,"data not found!"),HttpStatus.NOT_FOUND); 
        }
    }
        return  new ResponseEntity<CoreResponseHandler>(new SuccessResponseBeanRefined(HttpStatus.BAD_REQUEST, ResponseStatusEnum.FAILED, ApplicationResponse.Failed," > Bad request"),HttpStatus.BAD_REQUEST);
}

из-за большого объема данных, я знаю, что будет задержка.Ничего не поделаешь.Но я думаю или обеспокоен тем, что если я смогу написать ответ по частям в какой-нибудь файл.Пожалуйста, предложите, что мне делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...