Я использую WebClient для вызова внешнего API, я связываю requestId для каждого запроса.Как только запрос обработан и ответ получен, я обновляю некоторую таблицу, используя requestId, чтобы я мог подтвердить, что все данные, связанные с requestId, обработаны.
public void getEmployeeData(List<Integer>employeeIds, String requestId){
WebClient webClient = WebClient.builder().baseUrl(baseUrl).build();
webClient.post().uri(uri)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.header(HttpHeaders.AUTHORIZATION, "Basic " + Base64Utils
.encodeToString((plainCreds)
.getBytes(Charset.defaultCharset())))
.body(BodyInserters.fromObject(body)).retrieve()
.bodyToFlux(EmployeeInfo.class)
.doOnError(throwable -> {
Mono.error(throwable);
}).subscribe(new Consumer<EmployeeInfo>() {
@Override
public void accept(EmployeeInfo employeeInfo) {
// Here I need the requestId which is passed as function
//parameter
}
});
}
Приведенная выше функция получает список идентификаторов сотрудников.с помощью requesttid мне нужно вызвать внешний API, чтобы получить информацию для списка сотрудников, прежде чем вызывать эту функцию, я сохраняю весь список сотрудников по запросу, так что после получения ответа я могу обновить таблицу, утверждая, чтовся информация о сотруднике получена для данного requestId.Теперь в части подписчика мне нужен requestId, чтобы я мог соотнести получаемый ответ с конкретным requesttid