Как использовать ReadBodyPredicateFactory для кэширования данных полезной нагрузки - PullRequest
0 голосов
/ 07 мая 2019

У меня есть микросервис Spring Boot, и я отправляю большую полезную нагрузку, используя swagger. На сервере я получаю только 15000 символов, а сбрасываемые 2000 символов не читаются.

Как я могу использовать ReadBodyPredicateFactory для кэширования текста сообщения тела?

Я использую Springcloudgateway и добавил фильтры. В фильтре в методе применения я пытаюсь прочитать полезную нагрузку JSON, используя

  DefaultServerRequest serverRequest = new DefaultServerRequest(exchange);
  body = serverRequest.bodyToMono(String.class).toFuture().get();

Иногда зависает.

Я попытался с Flux, а затем я получил только половину сообщения Flux body = request.getBody ();

    body.subscribe(buffer -> {

        try {
            System.out.println("byte count:" + 
           buffer.readableByteCount());
            byte[] bytes = new byte[buffer.readableByteCount()];
            buffer.read(bytes);
            DataBufferUtils.release(buffer);
            String bodyString = new String(bytes, StandardCharsets.UTF_8);
            sb.append(bodyString);
        } catch (Exception e) {
            e.printStackTrace();
        }
...