Session: Introduction to Reactive Programming
Lesson: Introduction to Reactive Programming
- Reactive Manifesto
- Introduce ReactiveX
- ReactiveX implementations
- The Observer, Iterator pattern and functional programming
- Discuss hot and cold publishers
Lesson: Reactive Streams API
- Introduce the Reactive Streams specification
- Publisher and Subscribers
- util.concurrent.Flow
- Transformation of Messages (Processor)
- Controlling messages
Session: Project Reactor
Lesson: Introduction
- Introduce the Reactor Building blocks
- Flux and Mono
- Creating observables
- Subscribing to a stream
Lesson: Testing Event Sources (introduction)
- Testing reactive implementations
- StepVerifier : test sequence of emitted items
- Defining expectations
- TestPublisher: produce test data to test downstream operators
Lesson: Reactive Operators
- Introduce Operators
- Show the use of marble diagrams
- Explain some commonly used operators
- Callback operators
Lesson: Schedulers (Multithreading)
- Thread usage of subscriber and consumer
- Using the subscribeOn method
- Introduce the Scheduler interface
- Using the observeOn method
Lesson: Backpressure
- Strategies for dealing with Backpressure
- “reactive pull” backpressure
Lesson: Exception Handling
- Handling errors in onError
- Exception handling strategies
- Using onErrorReturn or onErrorNext operators
- Using the retry operators
- The Global Error Handler
Session: Spring Data R2DBC
Lesson: Spring Data Review
- Quick review of Spring Data repositories
- Query return types
- Defining Query methods
- Pagination and sorting
Lesson: R2DBC
- Reactive Relational Database Connectivity
- DatabaseClient
- Performing CRUD operations
- Reactive Query annotated methods
Session: Spring WebFlux
Lesson: Introduction
- Annotated Controllers
- Functional Endpoints
- WebFlux configuration
- Creating a reactive REST endpoint
Lesson: Defining flows
- Defining the application flow
- Actions
- Defining decision
- Navigating flows
- RouterFunction
Lesson: View Technologies
- View technologies
- Using Thymeleaf to create the view
- View Configuration
Session: Spring WebClient
Lesson: Introduction to WebClient
- Working with asynchronous and streaming APIs
- Making requests
- Handling the response
Lesson: WebTestClient
- Testing WebFlux server endpoints
- Testing controllers or functions
- Define integration tests
Session: Spring Reactive WebSockets
Lesson: Introduction to WebSockets
- Be familiar with the basics of WebSockets
- Understand the HTTP handshake and upgrade
- Name some of the advantages of WebSockets
Lesson: Defining the WebSocket
- WebSocket Message Handling
- WebSocketSession
- Implementing the WebSockethandler
- Creating a Browser WebSocket Client
Lesson: WebSocket STOMP
- Streaming (or Simple) text-orientated messaging protocol
- Introduce SockJS
- Connecting to the STOMP endpoint
- Configuring the message broker
- STOMP destinations
Lesson: Reactive WebSocket
- Reactive WebSocket support
- Implement the reactive WebSocketHandler
Session: NOSQL and MongoDB
Lesson: BigData
- Introduce Big Data
- Explain the need for enhanced data storage
Lesson: Introduction to MongoDB
- JavaScript Object Notation Overview
- Introduce Binary JSON (BSON)
- Starting the database
- Creating Collections and Documents
- Executing ‘simple’ database commands
- Introduce the ObjectID
- Searching for documents using query operators
- Updating and deleting documents
- MongoDB Compass
Session: Spring and MongoDB
Lesson: Spring and MongoDB
- MongoDB Support in Spring Data
- MongoClient and MongoTemplate
- Spring Data MongoDB configuration
- @EnableMongoRepositories
- Adding documents to the database
- The @Document and @Field annotations
- Polymorphism and the _class property
- The Criteria object
Lesson: Spring Data MongoDB
- MongoRepository
- Field naming strategy
- Using JSON queries to find documents
- The @PersistenceConstructor annotation
Lesson: Reactive Repositories with MongoDB
- Using reactive repositories
- ReactiveMongoTemplate
- RxJava or Reactor