Общее время обработки для Spring Weflux Rest API (аннотированные контроллеры) - PullRequest
0 голосов
/ 11 мая 2018

Мы начинаем работу в Spring Webflux и используем аннотированные контроллеры для REST API.Мы хотели бы измерить общее время, необходимое загрузочному серверу Spring для обработки запроса.Похоже, мы могли бы использовать Spring WebFilter , однако я не уверен, как установить StartTime (какой-то атрибут в ServerWebExchange или другие заголовки запроса)?Кроме того, как только ответ завершен, как мы можем получить startTime и рассчитать разницу во времени?

Спасибо!

1 Ответ

0 голосов
/ 12 мая 2018

Да, вы можете использовать WebFilter для этого. Смотрите пример кода ниже:

@Component
@Slf4j
public class RequestTimingFilter implements WebFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        long startMillis = System.currentTimeMillis();
        return chain.filter(exchange)
            .doOnSuccess(aVoid ->
                log.info("Elapsed Time: {}ms", System.currentTimeMillis() - startMillis)
            );
    }
}

Обратите внимание на вызов doOnSuccess, который выполняется только при успешном выполнении запроса. Для ошибок, вы можете добавить doOnError вызов, чтобы увидеть время запроса.

...