Trung BìnhJava iconJava

Mono, Flux và backpressure trong Spring WebFlux là gì?

Mono<T>: publisher phát ra 0 hoặc 1 phần tử — tương tự Optional nhưng async. Flux<T>: publisher phát ra 0 đến N phần tử — tương tự Stream nhưng async và có thể vô tận. Cả hai là lazy — chỉ chạy khi có subscriber. Backpressure: cơ chế consumer báo cho producer "tôi chỉ nhận được X phần tử/giây" — ngăn producer overwhelm consumer. Quan trọng khi xử lý dữ liệu lớn: stream 1 triệu record từ DB mà không backpressure sẽ crash memory.

Ví dụ: Flux.fromStream(bigQuery).onBackpressureBuffer(1000). Kết hợp WebClient: gọi API bên ngoài không block thread trong khi chờ response. Thao tác chính: map(), flatMap(), filter(), zip(), merge() — chain các async operation một cách declarative.

Xem toàn bộ Java cùng filter theo level & chủ đề con.

Mở danh sách Java