Есть ли способ записать время до и после операции маршрутизации в NettyRoutingFilter? - PullRequest
0 голосов
/ 04 июля 2019

Я создаю шлюз для своих сайтов и использую Spring-Cloud-Gateway. Я хочу записать некоторые временные метки в запросе, включая время поступления запроса в (1) , время отправки ответа (2) , а время до и после операции маршрута (3) . Я могу получить (1) и (2) по следующему коду:

@Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {


        exchange.getAttributes().put(START_TIME, System.currentTimeMillis());

        Mono<Void> mono = chain.filter(exchange);

        return mono.then(Mono.fromRunnable(() -> {
            ServerHttpRequest request = exchange.getRequest();

            GatewayLog gatewayLog = new GatewayLog();

            /** some codes of building the gatewayLog **/

            String jsonMsg = JSON.toJSONString(gatewayLog);

            mono.log(jsonMsg);
            logger.info(jsonMsg);
        }));
    }

Но операция маршрута выполняется фильтром NettyRoutingFilter, и я не знаю, как получить отметку времени (3) с помощью WebFlux. Могу ли я добавить метод в моно, который может выполняться, когда работает NettyRoutingFilter.filter ()? Или у вас есть другие решения?

...