是否始终执行Spring Cloud Gateway全局过滤器?

时间:2018-09-24 15:40:30

标签: java spring spring-cloud spring-cloud-gateway

我在Spring Cloud Gateway中编写了一个全局过滤器,该过滤器创建了一个资源,该资源应供所有后续过滤器使用(即,OpenCensus范围,但这在这里并不重要),并且应在写入响应后关闭。

文档中提到了包括prepost部分在内的全局过滤器,但我认为,如果在正常请求处理过程中(即在运行“ pre ”,但在“发布”部分之前。

这是我的摘录:

@Bean
@Order(0)
public GlobalFilter createSpan() {
    return (exchange, chain) -> {
        /* PRE */
        SomethingCloseable resource = Factory.createResource();
        exchange.getAttributes().put(THE_RESOURCE, resource);
        return chain.filter(exchange).then(Mono.fromRunnable(/* POST */ resource::close));
    };
}

用OpenCensus术语来说,跨度总是包裹在文档的try/catch/finally中,而close调用总是在finally块中执行。

因此,这是一个实际的问题:如果在请求处理过程中发生未处理的异常,例如,将执行Closeable#close调用。在其他过滤器中?

0 个答案:

没有答案