Поскольку R2DBC является реактивным и неблокирующим, я хотел бы понять преимущества использования R2DBC в простой службе RESTful CRUD.
Предположим, что приложение весенней загрузки предоставляет службу RESTful, используя репозиторий ниже.
public interface CustomerRepository extends ReactiveCrudRepository<Customer, Long> {
@Query("SELECT * FROM customer WHERE last_name = :lastname")
Flux<Customer> findByLastName(String lastName);
}
Этот репозиторий вызывается из службы, и результаты должны быть преобразованы в службе перед возвратом в контроллер.
Flux<Customer> customers = repository.findAll();
Чтобы получить доступ к полному списку клиентов, мне нужно вызвать blockLast()
на Flux, что делает его блокирующим и лишает цели использования реактивных компонентов.
Означает ли это, что в этом простом примере нет никакой пользы от использования R2DBC? Я что-то упускаю ?
Можно ли использовать Flux только для асинхронной подписки, когда обработка коллекций Flux происходит в другом потоке?