Перейти к основному содержимому

72 записи с тегом "Reactive"

Посмотреть все теги

· 6 мин. чтения

1. Введение

В этом руководстве мы рассмотрим аннотацию @Async в Spring MVC, а затем познакомимся с Spring WebFlux. Наша цель — лучше понять разницу между ними.

2. Сценарий реализации

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

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

· 4 мин. чтения

1. Обзор

В этой статье мы создадим приложение с WebSocket и протестируем его с помощью Postman.

2. Веб-сокеты Java

WebSocket — это двунаправленное, полнодуплексное, постоянное соединение между веб-браузером и сервером . Как только соединение WebSocket установлено, соединение остается открытым до тех пор, пока клиент или сервер не решит закрыть это соединение.

Протокол WebSocket — это один из способов заставить наше приложение обрабатывать сообщения в реальном времени. Наиболее распространенными альтернативами являются длительные опросы и события, отправленные сервером. Каждое из этих решений имеет свои преимущества и недостатки.

· 4 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим различные параметры конфигурации сервера Reactor Netty в приложении Spring Boot. В итоге у нас будет приложение, демонстрирующее различные подходы к настройке.

2. Что такое Reactor Netty?

Прежде чем мы начнем, давайте посмотрим, что такое Reactor Netty и как он связан со Spring Boot.

Reactor Netty — это асинхронная среда сетевых приложений, управляемая событиями . Он предоставляет неблокирующие и готовые к обратному давлению клиенты и серверы TCP, HTTP и UDP. Как следует из названия, он основан на платформе Netty .

· 6 мин. чтения

1. Обзор

RSocket — это прикладной протокол, обеспечивающий семантику Reactive Streams — он функционирует, например, как альтернатива HTTP.

В этом руководстве мы рассмотрим RSocket с помощью Spring Boot и, в частности, то, как это помогает абстрагироваться от низкоуровневого API RSocket.

2. Зависимости

Начнем с добавления зависимости spring-boot-starter-rsocket :

· 2 мин. чтения

1. Обзор

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

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

В этой статье мы будем использовать WebClient — неблокирующий реактивный HTTP-клиент — чтобы проиллюстрировать, как загрузить файл. WebClient является частью библиотеки реактивного программирования под названием Project Reactor . Мы рассмотрим два разных подхода к загрузке файла с помощью BodyInserter .

2. Загрузка файла с помощью WebClient

Чтобы использовать WebClient , нам нужно добавить в наш проект зависимость spring-boot-starter-webflux :

· 6 мин. чтения

1. Обзор

В этой статье мы рассмотрим реактивные потоки Java 9. Проще говоря, мы сможем использовать класс Flow , который содержит основные строительные блоки для построения логики обработки реактивного потока.

Reactive Streams — это стандарт для асинхронной обработки потоков с неблокирующим обратным давлением. Эта спецификация определена в Reactive Manifesto , и существуют различные ее реализации, например, RxJava или Akka-Streams.

2. Обзор реактивного API

Чтобы построить Flow , мы можем использовать три основные абстракции и объединить их в логику асинхронной обработки.

· 5 мин. чтения

1. Введение

В этом руководстве мы собираемся обсудить, как использовать MongoDB в качестве бесконечного потока данных, используя хвостовые курсоры с Spring Data MongoDB .

2. Хвостовые курсоры

Когда мы выполняем запрос, драйвер базы данных открывает курсор для предоставления соответствующих документов. По умолчанию MongoDB автоматически закрывает курсор, когда клиент читает все результаты. Следовательно, поворот приводит к конечному потоку данных.

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

· 8 мин. чтения

1. Введение

В этом руководстве мы впервые рассмотрим RSocket и то, как он обеспечивает взаимодействие клиент-сервер.

2. Что такое RSocket ?

RSocket — это двоичный протокол связи «точка-точка», предназначенный для использования в распределенных приложениях. В этом смысле он представляет собой альтернативу другим протоколам, таким как HTTP.

Полное сравнение RSocket с другими протоколами выходит за рамки этой статьи. Вместо этого мы сосредоточимся на ключевой особенности RSocket: его моделях взаимодействия.

· 5 мин. чтения

1. Обзор

В этом руководстве представлены операторы map и flatMap в Project Reactor . Они определены в классах Mono и Flux для преобразования элементов при обработке потока.

В следующих разделах мы сосредоточимся на методах map и flatMap в классе Flux . Одноименные в классе Mono работают точно так же.

2. Зависимости Maven

Чтобы написать несколько примеров кода, нам понадобится зависимость ядра Reactor :

· 4 мин. чтения

1. Обзор

В реактивном программировании есть много способов создать публикатор типа Mono или Flux . Здесь мы рассмотрим использование метода defer для задержки выполнения издателя Mono .

2. Что такое метод Mono.defer?

Мы можем создать холодного публикатора, который может выдавать не более одного значения, используя метод defer класса Mono . Посмотрим на сигнатуру метода:

public static <T> Mono<T> defer(Supplier<? extends Mono<? extends T>> supplier)