Пример реактивного приложения на Spring WebFlux

  Рет қаралды 7,891

Сергей Петрелевич

Сергей Петрелевич

2 жыл бұрын

В одном из предыдущих видео ( • Разработка двух микрос... )
была разработана пара микросервисов для получения курса валют.
В этом видео переведем микросервисы на реактивный Spring WebFlux.
Оригинал записан для канала Отус
• Демо-занятие курса «Ja...
Обучаем программировать на java:
otus.ru/lessons/java-professi...
Код примеров:
github.com/petrelevich/curren...
github.com/petrelevich/jvm-di...
Чат в телеге для вопросов и обсуждений:
t.me/jvm_home

Пікірлер: 29
@user-bn9wc8db6s
@user-bn9wc8db6s 9 күн бұрын
Мне далеко не все уроки Сергея нравятся, но этот прям хорош!!! Спасибо!!!
@southhorizons5894
@southhorizons5894 3 күн бұрын
а мне все нравятся
@v.volkau
@v.volkau 5 ай бұрын
Отличное видео, пересмотрел второй раз спустя время и всё понял. Замечательный пример про бармена. Пожалуйста, продолжайте использовать такие бытовые примеры для объяснения - очень хорошо запоминается.
@sousTony
@sousTony 11 ай бұрын
ну что тут сказать - вы лучший, точнее только вас я и понимаю))
@takezo_kyiv
@takezo_kyiv 6 ай бұрын
Спасибо большое за видео! Очень познавательно
@bebrodudel
@bebrodudel 2 жыл бұрын
Сижу разбираюсь с вашим кодом. Не совсем понятно, каким образом запускается веб-страница на localhost:8082, отправляет запрос все по тому же хосту, а данные возвращаются с клиента, который обслуживает url: localhost:8081
@petrelevich
@petrelevich 2 жыл бұрын
Все порты стандартно оописываются в application.yml источник данных запускается на 8080 промежуточный обработчик работает на 8081 клиентская часть на 8082 "браузер" обращается к "клиентской части", "клиентская часть" - к "промежуточному обработчику", а он - к "источнику данных". получается такая цепочка вызовов.
@bebrodudel
@bebrodudel 2 жыл бұрын
@@petrelevich Спасибо за ответ! Еще такой вопрос: если я отправлю данные с формы методом post, то вернется ли поток данных в ответе после запуска логики приложения? Допустим если я тот же seed хочу передавать не в pathVarieble, а в RequestBody
@petrelevich
@petrelevich 2 жыл бұрын
@@bebrodudel public Flux data(@PathVariable("seed") long seed) { .... return client.get().uri(String.format("/data/%d", seed)) ..... } Это просто java-код, нет никакой магии. Как передадите seed, так и будет работать. Можно хоть из файла прочитать, хоть по tcp/ip запросить.
@bebrodudel
@bebrodudel 2 жыл бұрын
@@petrelevich просто дело в том, что я пытаюсь решить свой таск, где мне нужно запускать генератор данных данными, которые вводятся пользователем из html формы. Поэтому пытаюсь найти верный вектор, чтобы понять куда копать. В связи с этим перефразирую вопрос. При отправке post-запросов, может ли вернутся поток данных на веб страницу?
@petrelevich
@petrelevich 2 жыл бұрын
@@bebrodudel Не вижу причин, почему это нельзя сделать.
@TheExcentro
@TheExcentro 2 жыл бұрын
Качество видео специально такое низкое?
@petrelevich
@petrelevich 2 жыл бұрын
Нет, на youtube все еще идет обработка видео. Почему-то очень долго в этот раз. После завершения должно быть 4K.
@Евгений-1
@Евгений-1 7 ай бұрын
откуда при раскладе 3 сек на источник и 2 сек на обработчик может возникнуть очередь? источник генерит медленнее чем обработчик обрабатывает. 1,2,3 источник 4,5 обработчик 4,5,6 источник 7,8 обработчик 7,8,9 источник
@petrelevich
@petrelevich 7 ай бұрын
какую очередь имеете в виду?
@Евгений-1
@Евгений-1 7 ай бұрын
@@petrelevich вот тут: 1 час 20 минут
@petrelevich
@petrelevich 7 ай бұрын
@@Евгений-1 Пересмотрел, начиная с этого момента kzbin.info/www/bejne/i3Wqi4lmqd-Dh5osi=WwyOF8Sv5okuUib_&t=4743 Ничего не услышал про "очередь".
@Евгений-1
@Евгений-1 7 ай бұрын
​@@petrelevich там в комментах задан вопрос и вот текстовая расшифровка: 1:20:57 у вас есть некий некая задержка а на 1:21:15 звучит "и в итоге тут должно больше наплодиться.... чем больше работаем тем больше накапливается разница" это где будет накопление? и откуда возьмется накопление учитывая что генерация медленнее чем обработка?
@petrelevich
@petrelevich 7 ай бұрын
@@Евгений-1 Теперь понятно, в чем вопрос. В классе DataProducerStringReactor данные генерируются без ограничения скорости, но потом добавляется задержка delayElements(Duration.ofSeconds(3)). Чтобы согласовать быстрый источник и медленный обработчик включается механизм backpressure. Это приводит к тому, что данные создаются в генераторе и буферизируются (накапливаются) пока потребитель не сможет их обработать. После обработки создается новая порция данных и они буферизируются, пока не обработаются. Понятно пояснил? Надо, наверное, видос на эту тему записать?
kafka в приложениях на SpringBoot
1:12:39
Сергей Петрелевич
Рет қаралды 3,3 М.
Son ❤️ #shorts by Leisi Show
00:41
Leisi Show
Рет қаралды 7 МЛН
Reactive Programming with Spring Boot | A Beginner's Guide
40:31
Project Reactor. В чем его идея?
14:34
Дмитрий Ш.
Рет қаралды 2,2 М.
reactor kafka
1:29:10
Сергей Петрелевич
Рет қаралды 949
Применение kafka для связи микросервисов на Java Spring Boot
2:00:49
КРАХ WINDOWS 19 ИЮЛЯ 2024 | ОБЪЯСНЯЕМ
10:04
Tag him😳💕 #miniphone #iphone #samsung #smartphone #fy
0:11
Pockify™
Рет қаралды 4,4 МЛН
Xiaomi SU-7 Max 2024 - Самый быстрый мобильник
32:11
Клубный сервис
Рет қаралды 549 М.
Better Than Smart Phones☠️🤯 | #trollface
0:11
Not Sanu Moments
Рет қаралды 18 МЛН