接手了一个 WebFlux 的项目,以前接触的都是传统 MVC,现在一个接口响应一般有 40ms,偶尔会超过 100ms,大佬让我结合代码慢慢看,找出可能阻塞的地方.
伪代码大致是
public Mono saveUsers(request){
Flux result = Flux.fromIterable(Arrays.asList(request.getAge()).flatmap(x->{
①
if(x>35){
return Mono.empty();
}
saveCatch(request.getUserName);
return Mono.just(true);
});
②
return kafkaStreamSend(result);
}
saveCatch 是本地存一份,redis 存一份
kafkaStreamSend 是发送到下游 kafka 消费
大佬建议我在日志打印耗时,但是本菜鸟感觉异步执行太难了
request 中有 1000 个用户的信息,在①处记录将会输出每一次的耗时,一共 1000 次
在②处记录会因为异步执行输出时间很短
目前的想法是用 Flux.onNext()放在 flatmap 前后记录,但是对 WebFlux 没有很深的了解,尤其是执行顺序,中文互联网上资料也少的可怜.不知道有没有靠谱的教程学习下.
伪代码大致是
public Mono saveUsers(request){
Flux result = Flux.fromIterable(Arrays.asList(request.getAge()).flatmap(x->{
①
if(x>35){
return Mono.empty();
}
saveCatch(request.getUserName);
return Mono.just(true);
});
②
return kafkaStreamSend(result);
}
saveCatch 是本地存一份,redis 存一份
kafkaStreamSend 是发送到下游 kafka 消费
大佬建议我在日志打印耗时,但是本菜鸟感觉异步执行太难了
request 中有 1000 个用户的信息,在①处记录将会输出每一次的耗时,一共 1000 次
在②处记录会因为异步执行输出时间很短
目前的想法是用 Flux.onNext()放在 flatmap 前后记录,但是对 WebFlux 没有很深的了解,尤其是执行顺序,中文互联网上资料也少的可怜.不知道有没有靠谱的教程学习下.