Как правильно прочитать Flux и преобразовать его в один входной потокJAVA

Программисты JAVA общаются здесь
Anonymous
Как правильно прочитать Flux и преобразовать его в один входной поток

Сообщение Anonymous »

Я использую WebClient и собственный класс BodyExtractor для своего приложения с весенней загрузкой

Код: Выделить всё

WebClient webLCient = WebClient.create();
webClient.get()
.uri(url, params)
.accept(MediaType.APPLICATION.XML)
.exchange()
.flatMap(response -> {
return response.body(new BodyExtractor());
})
BodyExtractor.java

Код: Выделить всё

@Override
public Mono extract(ClientHttpResponse response, BodyExtractor.Context context) {
Flux body = response.getBody();
body.map(dataBuffer -> {
try {
JaxBContext jc = JaxBContext.newInstance(SomeClass.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();

return (T) unmarshaller.unmarshal(dataBuffer.asInputStream())
} catch(Exception e){
return null;
}
}).next();
}
Приведенный выше код работает с небольшой полезной нагрузкой, но не с большой полезной нагрузкой. Я думаю, это потому, что я читаю только одно значение потока с помощью next, и я' Я не уверен, как объединить и прочитать весь dataBuffer.

Я новичок в реакторе, поэтому не знаю многих трюков с потоком/ моно.

Подробнее здесь: https://stackoverflow.com/questions/464 ... nputstream

Вернуться в «JAVA»