Welcome to my hands-on learning repository for Project Reactor in Java! This repository contains my journey of exploring reactive programming concepts through practical examples and exercises using Project Reactor.
This repository is my personal learning space where I experiment with Project Reactor, a foundational library for building reactive applications on the JVM. Here, I document my progress through various reactive programming concepts, from basic to advanced.
- Basic reactive streams with
Flux
andMono
- Operators and transformations
- Backpressure handling
- Error handling strategies
- Testing reactive streams
- Advanced topics like combining publishers, hot vs cold publishers, etc.
- Practical examples and use cases
To work with the examples in this repository, you'll need:
- Java 11 or higher
- Maven 3.6+
- Basic understanding of Java and functional programming concepts
- (Optional) IDE with Java support (IntelliJ IDEA recommended)
-
Clone the repository:
git clone https://github.com/abhishek-shrestha224/java-reactive-programming.git cd project-reactor-learning
-
Build the project:
./mvnw clean install
The repository is organized by concepts, with each having its own package and examples:
-
Core Concepts
- Hello World with Reactor
- Flux vs Mono
- Subscribing to Publishers
-
Operators
- Transformation operators (map, flatMap)
- Filtering operators (filter, take, skip)
- Combining operators (merge, zip, concat)
-
Advanced Topics
- Backpressure strategies
- Schedulers and threading
- Hot vs Cold Publishers
- Testing with StepVerifier
While this is primarily a personal learning repository, I welcome suggestions, corrections, or additional examples that could help others learn Project Reactor. Feel free to open issues or pull requests!
Here are some excellent resources that helped me in this learning journey:
- Project Reactor Official Documentation
- Reactive Programming with Reactor 3
- Reactive Spring (by Josh Long)
- Reactive Systems in Java (book)
This project is licensed under the MIT License - see the LICENSE file for details.
Happy reactive coding! 🚀