我正在使用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
}
});
}
上面的函数接收带有请求的员工ID列表,我必须调用外部API来获取员工列表的信息,在调用此函数之前我将所有员工列表保存在请求者中,这样一次收到响应我可以更新表,说明已收到给定requestId的所有员工信息。现在在订户部分我需要requestId,以便我可以关联收到的响应属于特定的请求
答案 0 :(得分:2)
您可以在requestId上添加final,以便它可以在您的订阅功能上使用。
public void getEmployeeData(List<Integer>employeeIds, final String requestId){