Я использую 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
}
});
}
Вышеупомянутая функция получает список идентификаторов сотрудников с запрошенным идентификатором, мне нужно вызвать внешний API, чтобы получить информацию для списка сотрудников, перед вызовом этой функции я сохраняю весь список сотрудников по запросу, так что после получения ответа Получено, я могу обновить таблицу, указав, что вся информация о сотруднике получена для данного requestId. Теперь в части подписчика мне нужен requestId, чтобы я мог сопоставить, что полученный ответ принадлежит определенному запросу
@BrianClozel Я обновил вопрос более четким примером
Я все еще не понимаю проблемы. В этой области доступен параметр метода requestId. Почему вы не можете повторно использовать requestId, который у вас есть? Где вы ожидали найти эту информацию в противном случае?
Вы можете добавить final по requestId, чтобы его можно было использовать в вашей функции подписки.
public void getEmployeeData(List<Integer>employeeIds, final String requestId){
где это requestId, о котором вы говорите? Что ты пробовал? Почему это не работает? Вам нужно что-то делать с данными, возвращаемыми удаленной службой?