有人可以指导我吗,因为我是新的变化并试图了解如何处理这种情况?
问题: 我在下面的
getResp()
方法的通量响应之一中收到 readTimeout 异常,然后所有先前的成功响应都将被忽略并返回异常错误。
相反,我想返回在异常之前收到的所有成功响应。
public Flux<CustomObject1> getInfo(List<RequestObj> requestObjList) {
return requestObjList.stream()
.parallel()
.map(this::getResp)
.reduce(Flux::Merge)
.orElse(Flux.empty());
}
public Flux<CustomObject1> getResp(RequestObj requestObj){
// process the request and return ...
}
如果不清楚,请告诉我,很乐意提供更多详细信息。
有多种处理错误的方法
flatMap
使用
flatMapDelayError
将延迟任何错误,直到处理完所有元素
public Flux<CustomObject1> getInfo(List<RequestObj> requestObjList) {
return Flux.fromIterable(requestObjList)
.flatMapDelayError(this::getResp, Queues.SMALL_BUFFER_SIZE, Queues.XS_BUFFER_SIZE)
.onErrorResume(e -> {
// log error
return Mono.empty();
});
}
处理每个元素的错误
public Flux<CustomObject1> getInfo(List<RequestObj> requestObjList) {
return Flux.fromIterable(requestObjList)
.flatMap(request ->
getResp(request)
.onErrorResume(e -> {
// log error
return Mono.empty();
})
);