Why architecture matters here
Reactive fails on missing backpressure signals, subtle scheduler bugs, and debug pain. Architecture matters because operators + schedulers compose complex flows.
The architecture: every piece explained
The top strip is the protocol. Publisher emits. Subscription is demand contract. Subscriber handles onNext + onError + onComplete. Backpressure via request(n).
The middle row is composition. Operators transform (map/filter/flatMap). Schedulers pick threading pool. Hot vs cold — shared stream vs per-subscriber. Error handling onError propagates.
The lower rows are practice. Debug + hooks — reactor debug agent. Interop with virtual threads. Ops — testing + observability.
End-to-end flow
End-to-end: API request produces a Flux; operators filter + map; scheduler routes on boundedElastic; subscriber consumes on server thread. Backpressure keeps memory bounded even under burst. Errors propagate to error handler.