【发布时间】:2018-08-30 01:27:12
【问题描述】:
查看了 Spring Actuator MetricsWebFilter
看到了这段代码:
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return chain.filter(exchange).compose((call) -> filter(exchange, call));
}
private Publisher<Void> filter(ServerWebExchange exchange, Mono<Void> call) {
long start = System.nanoTime();
ServerHttpResponse response = exchange.getResponse();
return call.doOnSuccess((done) -> success(exchange, start))
... more code ...
}
如果没有compose() 映射会有什么不同吗?
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return chain.filter(exchange).doOnSuccess( ... ) ... more code...
}
我的线索是compose() 与transform() 相比,每个订阅者执行一次。 doOnSuccess() 但是每个订阅者也会执行一次。
只是为了方便,使用filter(...)函数而不是内联代码?
【问题讨论】:
标签: java reactive-programming spring-webflux project-reactor spring-boot-actuator