WebFlux, Virtual Threads и все-все-все

Или: как спорили о реактивщине, а потом Java 21 всё запутала ещё сильнее Реактивное программирование обещало нам масштабируемость и производительность. Оно их дало. Но вместе с этим подарило новый вид боли: stacktrace на 47 фреймов, половина из которых operator.onNext , а элементарные вещи написаны так, словно решаешь задачу на leetcode. Потом подвезли Virtual Threads, и половина интернета написала «реактивщина умерла», другая – «ничего не изменилось». Истина где-то посередине. Попробуем с вами разобраться.

https://habr.com/ru/articles/1011538/

#webflux #виртуальные_потоки #virtual_threads #spring #java #reactive

WebFlux, Virtual Threads и все-все-все

Или: как спорили о реактивщине, а потом Java 21 всё запутала ещё сильнее Реактивное программирование обещало нам масштабируемость и производительность. Оно их дало. Но вместе с этим подарило новый вид...

Хабр

Инженерия создания микросервиса spring-web-flux

Создать Spring-сервис просто: существует масса статей и отличная документация. Однако среди всего этого многообразия материалов зачастую сложно разобраться, какой именно набор технологий лучше выбрать и каким образом эти технологии должным образом интегрировать друг с другом. После перехода на новые версии библиотек многое начинает функционировать иначе, появляются совершенно другие подходы. В данной статье я хочу продемонстрировать один из возможных способов разработки микросервиса в 2026 году, а также рассмотреть несколько инструментов автоматической генерации кода: OpenApiGenerator, JooqCodegen, GigaChat, Liquibase — и объяснить, как они работают вместе в рамках единого проекта. Точкой отсчета для построения микросервиса сделаем описание REST API. Допустим, в нашем фантастическом мире аналитик заранее подготовил спецификацию API с помощью формата OpenAPI, хотя подобное встречается и в реальной практике.

https://habr.com/ru/articles/982774/

#spring_framework #reactor #webflux #openapi_generator #jooqcodegen #liquibase #microservices

Инженерия создания микросервиса spring-web-flux

Создать Spring-сервис просто: существует масса статей и отличная документация. Однако среди всего этого многообразия материалов зачастую сложно разобраться, какой именно набор технологий лучше выбрать...

Хабр

[Перевод] Нативный API Versioning в Spring 7: долгожданная официальная поддержка

Команда Spring АйО подготовила перевод статьи о том, как Spring Framework 7 приносит нативную поддержку API-версионирования — темы, которая годами оставалась на разработчиках и собирала тонны костылей. Теперь Spring Framework предлагает единый, продуманный механизм как для серверной, так и для клиентской стороны. Что это меняет для архитектуры и разработки на Spring — разберёмся в статье.

https://habr.com/ru/companies/spring_aio/articles/967454/

#Spring #APIversioning #Spring7 #WebMVC #WebFlux #RestClient #WebClient #RequestMapping #версионирование #депрекейт

Нативный API Versioning в Spring 7: долгожданная официальная поддержка

Команда Spring АйО подготовила перевод статьи о том, как Spring Framework 7 приносит нативную поддержку API-версионирования — темы, которая годами оставалась на разработчиках и собирала тонны...

Хабр

SSE + Java + WebFlux = энтерпрайз решение для отправки пушей

В этом посте я расскажу, почему для доставки push-уведомлений в клиентское приложение была выбрана технология Server-Sent Events , и главное, как реализовать масштабируемый SSE сервис на Java + Spring Boot + Webflux, который подойдет для использования не только в небольших проектах, но и в крупных организациях с большим количеством пользователей. Естественно, без подготовки дополнительной инфраструктуры не обойдется.

https://habr.com/ru/articles/956766/

#java #webflux #sse #spring #микросервисы #энтерпрайз #архитектура #инфраструктура #rabbitmq #redis

SSE + Java + WebFlux = энтерпрайз решение для отправки пушей

Привет, Хабр! Меня зовут Никита Летов, и я являюсь Java бекенд разработчиком, а также Техлидом. Данный пост продолжает серию постов по разработке бэкенд-микросервисов на Java и Spring. Для тех, кому...

Хабр

Graph Ql клиент. Быстрый старт

Приветствую, коллега. Не так давно столкнулись с необходимостью реализовать взаимодействие с Graph Ql сервисом. Появилась задача аутентификации, настройки подключения, получения и передачи потребителям информации. В результате нашли много материалов, в которых описано, как развернуть Graph Ql сервис, как его использовать с базой данных. Например вот , и вот . Это подробные статьи, которые помогут решить сложные задачи. Но что делать, если стоит задача поменьше и хочется получить комплексное описание решения? Хочу предложить вариант, насытив его информацией, которая принесет пользу. Заказчик получит работающий сервис, разработчик необходимые знания и способ решения, который можно дополнять и улучшать для конкретных условий использования. Для погружения в Graph Ql и детали его использования есть статьи - вот , вот , вот и документация . Эта статья будет сосредоточена на задаче реализации клиента к Graph Ql серверу. Если для вас стоит подобная задача, то нам по пути. Поехали ...

https://habr.com/ru/companies/alfastrah/articles/952862/

#spring #redis #webflux #graphql #kafka #высоконагруженные_приложения #рефакторинг #unit_testing #backend #analytics

Graph Ql клиент. Быстрый старт

Используемые технологии Технологический стек: Java 21; Spring boot; Spring webFlux Maven; WebClient; Какую пользу принесет эта статья? Эта статья предлагает вариант реализации клиента к  Graph Ql...

Хабр

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

С приходом популярности генеративных нейросетей, другие виды искусственного интеллекта тоже получили своё место под солнцем. Однако, ещё до этого уже существовали проекты, где искусственный интеллект играет в различные игры, получает очки за достижение целей и обучается на основе своих результатов. При этом, у каждого игрового ИИ есть свой массив доступных ему действий, который может быть постоянным или изменяемым согласно правилам. Я решил собрать небольшой проект, описать механизм взаимодействия ИИ с игровым пространством, а уже потом наполнить игру правилами и смыслом.

https://habr.com/ru/articles/912934/

#искусственный_интеллект #java #html #javascript #webflux #spring #qlearning #gamedev #черное_зеркало

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

Это моя небольшая история про создание примитивного пет-проекта. Откуда растут ноги: Я посмотрел 4 эпизод 7 сезона сериала «Чёрное зеркало», где описывалась компьютерная игра с искусственным...

Хабр

Spring. Аутентификация на reactive feign

В этой статье проведены параллели между обработкой ошибок в feign и reactivefeign клиентах на примере реализации starter, который реализует аутентификацию по OAuth 2.0 в spring reactive подходе. В этой статье не будет описания реактивного стека. Если Вы хотите разобраться, какие есть преимущества и зачем его применять, рекомендую посмотреть эту серию статей . В этой статье не будет сравнения реактивного и нереактивного подхода. Для этого есть такая статья . В этой статье я хочу показать, что перевод компонентов на реактивность - несложная задача по рефакторингу, которая не займет много времени. Добавить монетку в копилку того, что перевод на реактивность - процесс, основные затраты в котором нужно сделать на первом шаге, когда Вы решаетесь применять этот подход, а адаптировать существующие компоненты просто.

https://habr.com/ru/companies/alfastrah/articles/911304/

#java #springboot #reactor #keycloak #authentication #unittesting #tdd #feign #starter #webflux

Spring. Аутентификация на reactive feign

Контекст В этой статье проведены параллели между обработкой ошибок в  feign  и  reactivefeign  клиентах на примере реализации starter, который реализует аутентификацию по OAuth 2.0...

Хабр
非同期処理続編(Flux, エラーハンドリング, block) - Qiita

はじめに前回の記事では、WebClientを使ってOpenWeatherMap APIに非同期でアクセスする方法をご紹介しました。今回はその続編として、より深くリアクティブプログラミングの基礎…

Qiita

Spring Reactor. Эволюция сервисов. На пути к реактивности

Это статья описывает опыт миграции традиционного приложения java spring на Spring reactor стек. О специфике разрабатываемой информационной системы, уже подробно рассказывал . Кратко о системе - смешанная сервисно-микросервисная архитектура. Чтобы получить бизнес результат, требуется вызвать микросервис, который вызывает сервис, который вызывает набор микросервисов для формирования ценностного набора данных. Получается цепочка вызовов. Сервисы и микросервисы разрабатывались на традиционном технологическом стеке, без использования реактивного подхода. Мое знакомство с реактивным подходом произошло в 2022 году. Плюсы и минусы я осознавал, как мог. В рамках разрабатываемой системы мне было сложно найти ему точку применения. Тогда сложилось понимание, что в существующих рамках реактивный подход не даст возможности эволюционных изменений. Если его применять, то применять ко всему и сразу, как постулирует реактивный манифест . Даешь революцию! Это было заблуждение. Его я не смог разрушить, даже изучая документацию и статьи. Чего-то релевантного моей ситуации в открытых источниках я найти не мог. Этой статьей постараюсь предложить путь и убедить сомневающихся, что долго раздумывать не стоит. Делайте смелый шаг на пути к реактивному стеку.

https://habr.com/ru/companies/alfastrah/articles/883936/

#spring_boot #webflux #tomcat #asynchronous #nio #netty #reactor #redis #performance #feign

Spring Reactor. Эволюция сервисов. На пути к реактивности

Контекст Это статья описывает опыт миграции традиционного приложения java spring на  Spring reactor  стек. О специфике разрабатываемой информационной системы, уже подробно ...

Хабр

Красивая обработка ответов в WebClient

Преимущества асинхронного взаимодействия ясны многим, однако работа с библиотекой WebFlux часто вызывает затруднения у Java-разработчиков В этой статье разложены основы работы с webclient и реактивными стримами, взаимодействия Издателя и Подписчика, а также обработки ответов и ошибок, возникающих в процессе выполнения программы

https://habr.com/ru/articles/873358/

#java #webflux #spring

Красивая обработка ответов в WebClient

На текущий момент WebClient — актуальный клиент для выполнения HTTP‑запросов. Он предоставляет достаточно гибкий интерфейс, позволяющий декларативно компоновать асинхронную логику. В...

Хабр