powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / В чем смысл Webflux из Spring5
28 сообщений из 28, показаны все 2 страниц
В чем смысл Webflux из Spring5
    #39821924
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал вот это вот:
https://www.baeldung.com/spring-reactor

скачал себе:

https://github.com/eugenp/tutorials/tree/master/spring-5-reactive

и так и не понял в чём профит от этих Flux и Mono

Что значит, что репозиторий должен быть реактивным?
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39821935
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Классный туториал. Спасибо за ссылку.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822014
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunkaquestioner,

Классный туториал. Спасибо за ссылку.

Сарказм?
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822358
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто на пальцах объяснить зачем это надо?

Чем это отличается от асинхронных сервлетов?
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822480
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так Баелдунг в начале статьи и пишет Why reactor.

А по поводу чем оно отличается от асинхронных сервлетов - я не знаю. Ты расскажи что это такое за сервлеты.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822506
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonТак Баелдунг в начале статьи и пишет Why reactor.

А по поводу чем оно отличается от асинхронных сервлетов - я не знаю. Ты расскажи что это такое за сервлеты.

Там какая-то вода написана.

https://www.baeldung.com/spring-reactor The reactive design pattern is an event-based architecture for asynchronous handling of a large volume of concurrent service requests coming from single or multiple service handlers.

And the Spring Reactor project is based on this pattern and has the clear and ambitious goal of building asynchronous, reactive applications on the JVM.
Мой перевод:
Есть какой-то там паттерн, который помогает строить асинхронные реактивные приложения(что это на самом деле непонятно).
Этот паттерн основан на событийной архитектуре для асинхронной обработки большого количества конкурентных запросов к сервисам приходящих от одного или нескольких сервис хэндлеров.

Честно, я не особо вкурил, что это значит.


По поводу асинхронных сервлетов:
Грубо говоря метод контроллера возвращает Future, которую выполнит какой-то другой поток. При этом поток, который слушает запрос - освобождается, но соединение висит и клиент получит ответ только по его выполнению
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822509
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПо поводу асинхронных сервлетов:
Грубо говоря метод контроллера возвращает Future, которую выполнит какой-то другой поток. При этом поток, который слушает запрос - освобождается, но соединение висит и клиент получит ответ только по его выполнениюсо стороны использования websocket - это велосипед
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822522
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЕсть какой-то там паттерн, который помогает строить асинхронные реактивные приложения(что это на самом деле непонятно).
Этот паттерн основан на событийной архитектуре для асинхронной обработки большого количества конкурентных запросов к сервисам приходящих от одного или нескольких сервис хэндлеров.

Честно, я не особо вкурил, что это значит.

Смотри. Если ты делаешь интернет магазин на 5-10 чел. То тебе пофиг какой там будет Реакт или Не-реакт.
Ты разницы не заметишь. Но если ты кодишь hi-load. И утебя 10000 Threads висят но ожидании I/O то ... учоные
установили что в этом случае лучше "ожидать" это событие по другому. Вот про это и эти рекативные фреймворки.

По поводу реактивного сервлета. Не уверен. Надо смотреть. Callable/Future - это просто обёртки которые
ничего не делают и просто обладают контрактом. Надо смотреть какой двигатель их двигает.

Пользователям Node.JS скорее всего подобные фреймворки не нужны вообще. У них такой I/O изначально был заложен.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822530
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяquestionerПо поводу асинхронных сервлетов:
Грубо говоря метод контроллера возвращает Future, которую выполнит какой-то другой поток. При этом поток, который слушает запрос - освобождается, но соединение висит и клиент получит ответ только по его выполнениюсо стороны использования websocket - это велосипед

Тут речь не про сокеты. Хотя клиенту по барабану как внутренняя кухня сервера устроена. Работает то также
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822540
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermaytonТак Баелдунг в начале статьи и пишет Why reactor.

А по поводу чем оно отличается от асинхронных сервлетов - я не знаю. Ты расскажи что это такое за сервлеты.

Там какая-то вода написана.

https://www.baeldung.com/spring-reactor The reactive design pattern is an event-based architecture for asynchronous handling of a large volume of concurrent service requests coming from single or multiple service handlers.

And the Spring Reactor project is based on this pattern and has the clear and ambitious goal of building asynchronous, reactive applications on the JVM.
Мой перевод:
Есть какой-то там паттерн, который помогает строить асинхронные реактивные приложения(что это на самом деле непонятно).
Этот паттерн основан на событийной архитектуре для асинхронной обработки большого количества конкурентных запросов к сервисам приходящих от одного или нескольких сервис хэндлеров.

Честно, я не особо вкурил, что это значит.


На самом деле Вы правильно перевели, но не поняли прочитанного. Для того, чтоб понять надо видимо прочитать что означает reactive - responsive, scalable, and recilient. Т.е. русским языком ваша апп не падает, маштабируется и эластична (другими словами если шаблон начинает рваться, то автоматически добавляется количество нодов в нашем примере потоков типо)

Дальше надо не поленится и глянуть в код (лучше склонировать гитхаб... надеюсь все умеют ) запустить апликуху и посмотреть как дело происходит.

В общем идем в
https://github.com/eugenp/tutorials/blob/master/spring-reactor/src/main/java/com/baeldung/Config.java

смотрим на бин

Код: java
1.
2.
3.
4.
    @Bean
    EventBus createEventBus(Environment env) {
        return EventBus.create(env, Environment.THREAD_POOL);
    }



Смотрим в коде библиотеки что означает Environment.THREAD_POOL

Код: java
1.
	public static final String THREAD_POOL = "threadPoolExecutor";



Опа-на! Так это всеми нами так горячо любимый пул экзекьютор

Надеюсь всем полегчало... хорошего дня коллеги
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822682
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergunkaОпа-на! Так это всеми нами так горячо любимый пул экзекьютор

Надеюсь всем полегчало... хорошего дня коллеги

Вопрос для чего это пул используется? Для обработки событий?, если да то обработка блокирующая или нет?
вот в чем вопрос.


Пользовали этот прореактор еще до spring5 для ассинхронных запросов между микросервисами вместе с retrofit.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822720
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonquestionerЕсть какой-то там паттерн, который помогает строить асинхронные реактивные приложения(что это на самом деле непонятно).
Этот паттерн основан на событийной архитектуре для асинхронной обработки большого количества конкурентных запросов к сервисам приходящих от одного или нескольких сервис хэндлеров.

Честно, я не особо вкурил, что это значит.

Смотри. Если ты делаешь интернет магазин на 5-10 чел. То тебе пофиг какой там будет Реакт или Не-реакт.
Ты разницы не заметишь. Но если ты кодишь hi-load. И утебя 10000 Threads висят но ожидании I/O то ... учоные
установили что в этом случае лучше "ожидать" это событие по другому. Вот про это и эти рекативные фреймворки.

По поводу реактивного сервлета. Не уверен. Надо смотреть. Callable/Future - это просто обёртки которые
ничего не делают и просто обладают контрактом. Надо смотреть какой двигатель их двигает.

Пользователям Node.JS скорее всего подобные фреймворки не нужны вообще. У них такой I/O изначально был заложен.

Сервлеты не реактивные, а асинхронные)


По поводу реактивных фреймфорков хочется больше конкретики, за счёт чего это всё достигается.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822722
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunkaquestionerпропущено...


Там какая-то вода написана.

пропущено...

Мой перевод:
Есть какой-то там паттерн, который помогает строить асинхронные реактивные приложения(что это на самом деле непонятно).
Этот паттерн основан на событийной архитектуре для асинхронной обработки большого количества конкурентных запросов к сервисам приходящих от одного или нескольких сервис хэндлеров.

Честно, я не особо вкурил, что это значит.


На самом деле Вы правильно перевели, но не поняли прочитанного. Для того, чтоб понять надо видимо прочитать что означает reactive - responsive, scalable, and recilient. Т.е. русским языком ваша апп не падает, маштабируется и эластична (другими словами если шаблон начинает рваться, то автоматически добавляется количество нодов в нашем примере потоков типо)

Дальше надо не поленится и глянуть в код (лучше склонировать гитхаб... надеюсь все умеют ) запустить апликуху и посмотреть как дело происходит.

В общем идем в
https://github.com/eugenp/tutorials/blob/master/spring-reactor/src/main/java/com/baeldung/Config.java

смотрим на бин

Код: java
1.
2.
3.
4.
    @Bean
    EventBus createEventBus(Environment env) {
        return EventBus.create(env, Environment.THREAD_POOL);
    }



Смотрим в коде библиотеки что означает Environment.THREAD_POOL

Код: java
1.
	public static final String THREAD_POOL = "threadPoolExecutor";



Опа-на! Так это всеми нами так горячо любимый пул экзекьютор

Надеюсь всем полегчало... хорошего дня коллеги

А зачем тогда база данных должна быть реактивной?
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822727
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,
Вот не могу не согласиться - нужно начинать с понимания что такое "реактивное про-е" вообще и для чего оно народу, а не выдергивать "туториал" ( а точнее, рекламный "трейлер" к платному курсу) и требовать публично разжевать. Про "реактор" куча статей и книг, когда освоит - можно переходить к конкретному применению (судя по замечаниям ТС он в принципе не понимает что это и зачем).
А то как тут на форуме вэб дизайнер сразу полез проекты на спринге править ибо его "назначили вместо уволившегося джависта"
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822741
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте конкретику, пожалуйста
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822751
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermaytonпропущено...

Смотри. Если ты делаешь интернет магазин на 5-10 чел. То тебе пофиг какой там будет Реакт или Не-реакт.
Ты разницы не заметишь. Но если ты кодишь hi-load. И утебя 10000 Threads висят но ожидании I/O то ... учоные
установили что в этом случае лучше "ожидать" это событие по другому. Вот про это и эти рекативные фреймворки.

По поводу реактивного сервлета. Не уверен. Надо смотреть. Callable/Future - это просто обёртки которые
ничего не делают и просто обладают контрактом. Надо смотреть какой двигатель их двигает.

Пользователям Node.JS скорее всего подобные фреймворки не нужны вообще. У них такой I/O изначально был заложен.

Сервлеты не реактивные, а асинхронные)


По поводу реактивных фреймфорков хочется больше конкретики, за счёт чего это всё достигается.
Корни этой проблемы растут из органзиации процессов операционной системы и I/O.
В терминах Java это объяснить скорее всего нельзя. Это уходит во внешний мир железа
и операционок.

Поэтому чтобы тебе понять конкретику - надо уйти вообще от Java и почитать что нибудь где
хард. Язык С, Unix, I/O, select/poll и так далее.

Java здесь ничго нового не превносит. Она просто плетётся в хвосте современных approaches в
софтостроении для hi-load. Или просто перенимает опыт смежных систем.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822759
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тут пишут про реактивный АПИ к couchbase https://blog.couchbase.com/why-you-should-care-about-reactive-database-access/

Как по мне - профита не много.

синхронный вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
JsonDocument post = bucket.get("post::1");

// Extract the list of comment IDs
JsonArray commentIds = post.content().getArray("comments");

// grab as much comments as needed and add it to the list
List<JsonDocument> comments = new ArrayList<JsonDocument>();
for (int i = 0; i < commentIds.size(); i++) {
	if (comments.size() == 2) {
	    break;
	}
	
	JsonDocument comment = bucket.get(commentIds.getString(i));
	if (comment != null && comment.content().getBoolean("published")) {
	    comments.add(comment);
	}
}


Реактивный вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
List<JsonDocument> comments = bucket
    .async()
    .get("post::1")
    .flatMap(post -> Observable.from(post.content().getArray("comments").toList()))
    .flatMap(commentId -> bucket.async().get((String) commentId))
    .filter(comment -> comment.content().getBoolean("published"))
    .take(2)
    .toList()
    .timeout(2500, TimeUnit.MILLISECONDS)
    .toBlocking()
    .single();



Ок. В синхронном варианте мы берем пост, потом первый коммент, второй коммент

В реактивном - сначала пост тянем, потом параллельно комменты

В синхронном варианте эту логику тоже можно руками написать и сильно не перетрудиться.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822760
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, наверное потому, что стандартные имплементации jdbc - используют блокирующие стримы.Чтобы добиться асинхронного блокирующего вызова, требуется создать +1 поток. Т.е. - сам вызов базы и основной поток, который будет ждать обращения к базе, потому что оно блокирующее. Это сделать достатчно легко, но в итоге мы получим проблему: -n+1 потоков

Если блокирующие потоки(+1 которые все) - живут не долго, ну, наверное, проблемой это не становится. Но как только система нагружается и эти вызовы становятся достаточно длинными, чтобы устроить ад, то об отказустойчивости (которая часть патерна реактивного) говорить не приходится. А так как мы говорим о реактивном чаще в разрезе микросеврисов, каждый из которых запскается в ограниченных ресурсах, то проблема блокирующих потоков как в нехватке ресурсов - всплывает быстро.

Я примерно так понимаю проблемы реактивного программирования в разрезе - зачем же реактивные репозитории.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822762
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
реактивно = асинхроннно + что-то.

Это так?
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822769
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerреактивно = асинхроннно + что-то.

Это так?

надо в голове чуть чуть все сдвинуть.
Обычный подход - мы получили данные и мы их обрабатываем .
Реактивный подход - мы получим данные и передаем "ссылку" на запрос к данным в дата флоу - последовательность обработчиков. До получения данных мы уже задаем последовательность их обработки.Этот подход дает возможность использовать stateless обработчиков, т.е. все методы, которые должны обраотать данные, гарантированно никакого состояния по итогу обработки хранить не будут.

Подобных подход обязывает, чтобы каждый обработчик был не блокирующиим и асинхронным.
Надеюсь меня поправят, если я извратил.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822772
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, может быть стоит познакомиться с функциональным программированием. Так проще будет...наверное;)
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822774
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверинquestioner, наверное потому, что стандартные имплементации jdbc - используют блокирующие стримы.Чтобы добиться асинхронного блокирующего вызова, требуется создать +1 поток. Т.е. - сам вызов базы и основной поток, который будет ждать обращения к базе, потому что оно блокирующее. Это сделать достатчно легко, но в итоге мы получим проблему: -n+1 потоков

Если блокирующие потоки(+1 которые все) - живут не долго, ну, наверное, проблемой это не становится. Но как только система нагружается и эти вызовы становятся достаточно длинными, чтобы устроить ад, то об отказустойчивости (которая часть патерна реактивного) говорить не приходится. А так как мы говорим о реактивном чаще в разрезе микросеврисов, каждый из которых запускается в ограниченных ресурсах, то проблема блокирующих потоков как в нехватке ресурсов - всплывает быстро.

Я примерно так понимаю проблемы реактивного программирования в разрезе - зачем же реактивные репозитории.

Это ж обычная ORM-ная n+1 проблема.

Озверинстандартные имплементации jdbc - используют блокирующие стримы
на английском стрим как тут будет? (Thread или java-8 Stream или IO stream?)

Почему в одном случае поток живёт долго, а в другом не долго? я не понимаю этого

Как по мне в обоих случаях надо делать следующее.

Thread_1 достаёт сущность Post, идёт по commentId и создаёт Runnable для каждой для доставания коммента и отправляет в экзекутор, делаем волатильную атомик переменную инкремент которой происходит по доставанию коммента и когда счётчик достиг двух - тушим экзекутор, ну и чистим коллекцию если больше двух комментов было подтянуто. ну и кстати тогда мы достанем 2 рандомных коммента, а просят 2 первых.

https://blog.couchbase.com/why-you-should-care-about-reactive-database-access/ Now let's say we want to load the first two comments that are published when the blog post is loaded
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822779
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, очепяталсо, не стрим а сокет.

Ну стандартная n+1 проблема в orm заключается чуть чуть в другом - неконтроллируем рост обращений к базе, но итог - да, примерно похожий.

В одном случае поток живет долго, а в другом нет - потому что в одном случае данные могут запрашиваться\вставляться\обрабатываться - долго, а в другом - нет. Зависит от объема данных, не знаю, вызываемой хранимки, резалтсета и так далее.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822796
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверинquestioner, очепяталсо, не стрим а сокет.

Ну стандартная n+1 проблема в orm заключается чуть чуть в другом - неконтроллируем рост обращений к базе, но итог - да, примерно похожий.

В одном случае поток живет долго, а в другом нет - потому что в одном случае данные могут запрашиваться\вставляться\обрабатываться - долго, а в другом - нет. Зависит от объема данных, не знаю, вызываемой хранимки, резалтсета и так далее.

Хотите сказать, что бывают какие-то волшебные неблокирующие сокеты?

Это ведь в любом случае IO и оно может очень не хило тормозить.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822804
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerХотите сказать, что бывают какие-то волшебные неблокирующие сокеты?

Это ведь в любом случае IO и оно может очень не хило тормозить.
Сокет - это вообще абстракция. Это просто контракт по которому сетевые пакеты летают туда-сюда
и какие хедеры могут прилетать и какие - нет и какое есть состояние с двух сторон.

Как оно реализовано - много вариантов.
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822823
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerОзверинquestioner, очепяталсо, не стрим а сокет.

Ну стандартная n+1 проблема в orm заключается чуть чуть в другом - неконтроллируем рост обращений к базе, но итог - да, примерно похожий.

В одном случае поток живет долго, а в другом нет - потому что в одном случае данные могут запрашиваться\вставляться\обрабатываться - долго, а в другом - нет. Зависит от объема данных, не знаю, вызываемой хранимки, резалтсета и так далее.

Хотите сказать, что бывают какие-то волшебные неблокирующие сокеты?

Это ведь в любом случае IO и оно может очень не хило тормозить.

спешу напомнить, что работа с устройством физическим - не входит в возможости явы(в основном) и вы как бе - не являетесь системным программистом.

Потому что блокирующие сокеты в яве - это контракт, что при вызове системной ф-и на запись, вызов будет ждать окончания записи.
А неблокирующие(nio) - это контракт, что при вызове системной ф-ии на запись, никто ничего ждать не будет\может не дожидаться, пытаясь освободить потом как можно быстрее.


если же говорить о чтении, то в отдельном потоке будет запрос информаци, в другом - ее получение - неблокирующий сокет.

А что там системная ф-ия делает - вопрос уже к реализации в ОС\архитектурному уровню\etc
...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822865
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой днядавайте конкретику, пожалуйста

Reactive Streams in Java

Concurrency with RxJava,
Reactor, and Akka Streams


by Adam L. Davis
Apress 2019
ISBN-13 (pbk): 978-1-4842-4175-2
ISBN-13 (electronic): 978-1-4842-4176-9

...
Рейтинг: 0 / 0
В чем смысл Webflux из Spring5
    #39822888
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerОзверинquestioner, очепяталсо, не стрим а сокет.

Ну стандартная n+1 проблема в orm заключается чуть чуть в другом - неконтроллируем рост обращений к базе, но итог - да, примерно похожий.

В одном случае поток живет долго, а в другом нет - потому что в одном случае данные могут запрашиваться\вставляться\обрабатываться - долго, а в другом - нет. Зависит от объема данных, не знаю, вызываемой хранимки, резалтсета и так далее.

Хотите сказать, что бывают какие-то волшебные неблокирующие сокеты?

Это ведь в любом случае IO и оно может очень не хило тормозить.

Протокол бывает неблокирующий, у postgres libpq в оригинале неблокирующий. Т.е. в теории БД может получать по одному сокету подряд запросы с идетификатором и по мере выполнения по тому же сокету отдавать ответы с идентфикатором запроса (т.е отдавать не обязательно в том порядке в котором получила запросы).
И БД загружена и сокет загружен. Всем хорошо.

В jdbc идентфикатором запроса является поток, запустили запрос в отдельном потоке (сокете) и ждем на него ответ.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / В чем смысл Webflux из Spring5
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]