问题描述
public ObjectNode addLabelColorCodes(ObjectNode objectNode) {
Map<String,String> lablesMap = new ConcurrentHashMap<>();
if (!AList.isEmpty()) {
String joinedIds = StringUtils.join(AList,",");
LOGGER.info("join Ids are {}",joinedIds);
return Client.getLabelsById(joinedIds).doOnNext(response -> LOGGER.info("Labesl Response List:{}",response))
.flatMapIterable(response -> response.getobjects())
.doOnNext(Response -> {
objectNode.with("display").put(lablesMap.get(Response.getId()),Response.getLabel());
})
.then(Mono.just(objectNode))
.doOnNext(modified -> LOGGER.info("After Adding ObjectNode :{}",modified))
.onErrorReturn(objectNode)
.block();
}
}
LOGGER.info("After Adding ObjectNode :{}",objectNode);
return objectNode;
}@H_404_4@
如何在错误返回 .onErrorReturn(objectNode)
时添加objectNode的日志记录解决方法
您可以使用.doOnError()
运算符执行不影响当前流的操作。即
.flatMapIterable(response -> response.getObjects())
.doOnNext(Response -> {
objectNode.with("display").put(lablesMap.get(Response.getId()),Response.getLabel());
})
.doOnError(throwable -> LOGGER.warn("Error encountered",))
进一步说明。在进行反应式编程时,请尽量牢记不变性。与其在doOnNext内部对ObjectNode对象进行变异,不如使用map / flatmap,在该映射中,您可以将Response Object转换为新的ObjectNode。