Reactor-Netty: неожиданный тип сообщения: PooledUnsafeDirectByteBuf
У меня есть HttpServer и HttpClient. Если я использую HttpServerCodec и HttpObjectAggregator от Netty с обеих сторон, я получаю сообщение об ошибке.
Код сервера
HttpServer server = HttpServer.create(opts -> opts.listen(8092).afterChannelInit(channelInit -> {
ChannelPipeline pipeline = channelInit.pipeline();
pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(64*1024));
}));
server.newRouter(routes -> {
routes.post("/xmlvend", postHandler());
}).block(Duration.ofSeconds(30));
BiFunction<? super HttpServerRequest, ? super HttpServerResponse, ? extends Publisher<Void>> postHandler() {
return (req, resp) -> {
req.requestHeaders().entries()
.forEach(entry -> log.debug(String.format("header [%s=>%s]", entry.getKey(), entry.getValue())));
return resp.sendString(req.receive().asByteArray().take(1).log("received").flatMap(data -> {
return Flux.just("Hello");
}));
};
}
клиент
HttpClient client = HttpClient.create(opts -> opts.connect(host, port).poolResources(pool).afterChannelInit(serverEndPoint));
ByteBuf reqContent = getTestRequest();
DefaultFullHttpRequest reqHeader = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, url, reqContent);
Mono<HttpClientResponse> rsp = client.request(HttpMethod.POST, url, (req) -> req.chunkedTransfer(true).addHeader("Content-Length", Integer.toString(reqHeader.content().capacity())).sendHeaders().send(Flux.just(reqContent)/*clientRequest -> clientRequest.onNext(reqHeader.content())*/));
rsp.subscribe().block();
serverEndPoint также содержит HttpServerCodec и ObjectAggregator. Я попытался с помощью HttpClientCodec, не используя ничего в конвейере / с, попытался отправить DefaultFullHttpRequest. Либо я получаю исключение, либо на стороне клиента будет прочитано только 1024 байта. Мне нужно отправить запрос размером более 1024 байта.
Спасибо