У меня есть простой микросервис на 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 это происходит автоматически?