Spring boot 2 WebClient 在订阅者中获取上下文参数
Spring boot 2 WebClient get context parameter in subscriber
我正在使用 WebClient 调用外部 API,我正在为每个请求关联一个 requestId。处理请求并收到响应后,我将使用 requestId 更新一些 table,以便我可以确认与 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
}
});
}
以上函数接收带有 requestid 的员工 ID 列表,我必须调用外部 API 来获取员工列表的信息,在调用此函数之前我保存了所有员工列表requestid,这样一旦收到响应,我就可以更新 table 说明已收到给定 requestId 的所有员工信息。现在在订阅者部分我需要 requestId 以便我可以关联收到的响应属于特定的 requestid
您可以在 requestId 上添加 final,以便它可用于您的订阅功能。
public void getEmployeeData(List<Integer>employeeIds, final String requestId){
我正在使用 WebClient 调用外部 API,我正在为每个请求关联一个 requestId。处理请求并收到响应后,我将使用 requestId 更新一些 table,以便我可以确认与 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
}
});
}
以上函数接收带有 requestid 的员工 ID 列表,我必须调用外部 API 来获取员工列表的信息,在调用此函数之前我保存了所有员工列表requestid,这样一旦收到响应,我就可以更新 table 说明已收到给定 requestId 的所有员工信息。现在在订阅者部分我需要 requestId 以便我可以关联收到的响应属于特定的 requestid
您可以在 requestId 上添加 final,以便它可用于您的订阅功能。
public void getEmployeeData(List<Integer>employeeIds, final String requestId){