@alexsarrell

Нужно ли вручную чистить кэш после использования PredicateSpec.readBody()?

У меня есть простой микросервис на Spring Cloud Gateway, который маршрутизирует запросы к различным эндпоинтам в зависимости от содержимого тела запроса.

@Bean
fun billingRoute(builder: RouteLocatorBuilder): RouteLocator {

    return builder.routes()
        .route("test-route") { predicateSpec ->
            predicateSpec
                .path(<...>)
                .readBody(MessageDto::class.java) {
                    <...>
                }
                .uri(<...>)
       }


Во время фильтрации request body кэшируется и может быть доступно в объекте exchange по ключам ServerWebExchangeUtils.CACHED_REQUEST_BODY_ATTR и "cachedRequestBodyObject".

Нужно ли мне вручную освобождать содержимое этих DataBuffers после обработки запроса, чтобы избежать утечек памяти (я слышал, что это было необходимо при использовании фильтра CacheRequestBody Filter ранее), или в конце chain это происходит автоматически?
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы