У меня есть два модуля, один вызывает другой из шаблона отдыха.(администратор вызывает notifServer) У notifServer есть метод, помеченный @Async
.Я хочу вызвать исключение в этом методе, но администратор получает ответ слишком быстро, и метод исключения не может быть перехвачен администратором.
Я новичок в Spring и процесс @Async.Я попытался отобразить тело ответа от NotifServer на C CompletableFuture.class
.Но все равно я не получаю сообщение об ошибке.
Этот код от admin
ResponseEntity response = fcmRestTemplate.exchange(nsUrl + "/fcm/admin/" + bulkFcmId, HttpMethod.POST,
HttpEntityUtils.getHttpEntity(moduleCode), CompletableFuture.class);
if (response.getStatusCode() != HttpStatus.CREATED && response.getStatusCode() != HttpStatus.ACCEPTED) {
String errorMessage = ErrorResourceUtil.getErrorMessage((HashMap) response.getBody(),"Unable to send fcm");
setStatusToFailedByBulkFcmId(bulkFcmId);
throw new ClientException(errorMessage);
}
, теперь это от NotifServer
JobExecution jobExecution = jobLauncher
.run(importJob, new JobParametersBuilder()
.addString("fullPathFileName", TMP_DIR)
.addString("batch_fcm_id", String.valueOf(id))
.addLong("time",System.currentTimeMillis())
.toJobParameters());
if(jobExecution.getStepExecutions().stream().map(StepExecution::getStatus).findFirst().get().equals(BatchStatus.ABANDONED)){
throw new ClientException("INVALID CSV");
Это аннотировано @ Async.
Так есть ли способ перехватить исключение клиента в теле ответа в Admin?
EDIT Это API от notifServer
@ResponseStatus(HttpStatus.CREATED)
@PostMapping(value = "/admin/{bulkFcmId}")
public void pushFCMByAdmin(@PathVariable Long bulkFcmId) {
fcmService.sendFcmByAdmin(bulkFcmId, AuthUtil.getCurrentUser());
}
Тогда sendFcmByAdmin имеет аннотацию @Async.