webfilter 订阅过滤逻辑

webfilter do subscribe in filter logic

我正在使用 webflux。

intellij idea 发出警告。

警告信息:calling subscribe in non-blocking scope

有没有正确订阅响应单声道的方法? (我不想影响原始请求。)

@Slf4j
@Component
public class CustomWebFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        Mono<String> response = getAsyncResponse();
        mono.subscribe();

        return chain.filter(exchange);
    }
}

你不应该 subscribe() 但你需要构建反应流,WebFlux 将订阅它。此外,subscribe 是异步操作,您的过滤器将无法按预期工作。

@Slf4j
@Component
public class CustomWebFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        return getAsyncResponse()
                .flatMap(respone -> chain.filter(exchange));
    }
}