Slides from talk given on Tuesday June 12th at the Boulder Java Users Meetup Group and Wednesday June 13th, 2018 at the Denver Java Users Meetup Group.
This talk, by Geoff Filippi, will start with an introduction to reactive programming. We will introduce the Reactive Manifesto and explain Non-blocking IO. We will look at some of the new reactive programming features in Java like CompletableFuture and Reactive Streams. Project Reactor, Spring 5 and Spring Boot 2 are helping to make these new features accessible to Java developers. We will also introduce the concept of backpressure to control the flow of data.
You will learn how to create a Non-blocking application using Spring Boot 2. We will use start.spring.io to create a new Reactive application. Will will compare the Flux and Mono types and discuss when to use each.
About Geoff Filippi: Geoff is a Senior Architect at DISH Network, in the security group. Previously at Dish he served a large group of developers implementing microservices. Prior to his work at DISH, he was an Application Architect at Oildex, an oil and gas data service company. He also spent 12 years at Time Warner Cable, where he was a Senior Engineer. At TWC, he lead the team that built the video streaming web application, TWCTV.
Geoff holds BS and MS degrees in Computer Engineering from Virginia Tech. He holds several patents related to high-availability, architecture, wireless networks and cable systems.
Geoff is focused on automating security, API design, domain-driven design and cloud-native architectures.
19. SynchronousSynchronous
Client makes a request and waits for server to
complete
Server starts a thread per request
Blocks the thread that it runs on
Lots of concurrent requests use lots of threads
Familiar Java APIs
20. AsynchronousAsynchronous
Client makes a request and does not wait for server to
complete
Server handles all requests on the same thread
Does not block the thread that it runs on
Run in an event loop in a single thread
New Java APIs
24. Back PressureBack Pressure
Mechanism to prevent a message producer from
overwhelming a consumer
Consumer signals producer to pause
Should propogate through responsive systems
36. Reactive Spring DataReactive Spring Data
No JPA
JDBC is a fully-blocking API
Asychronous Database Access API (ADBA)
Proposal
Relational Databases are bottlenecks in reactive
systems
46. Reactive ReferencesReactive References
The Reactive Manifesto
Notes on Reactive Programming Part I: The Reactive
Landscape
Notes on Reactive Programming Part II: Writing Some
Code
Advanced Reactive Java - Operator-fusion (Part 1)
Understanding Reactive types
Design Principles behind Akka Streams
47. Spring Boot 2 ReferencesSpring Boot 2 References
Spring Boot 2
What's new in Spring Boot
2
Josh Long - Flux-Flix
Service
Spring Initializr
48. Spring 5 ReferencesSpring 5 References
Spring Framework 5
Spring WebFlux
WebFlux framework
Reactive Spring 5 and Application Design
Impact
SampleWebFluxApplication
Reacting to Spring Framework 5.0
Going reactive with Spring Data
Spring Messaging with RabbitMQ
Doing Reactive Programming with Spring 5
49. Spring Integrations ReferencesSpring Integrations References
Reactive Streams With Spring Data and
MongoDB
MongoDB Reactive Streams Java Driver
Project Kafka Reference Guide
Reactor Kafka Reference Guide
Kafka 1.0 Documentation
Reactive Kafka
RabbitMQ
RabbitMQ Node Tutorial
Reactor RabbitMQ Reference Guide
Spring Cloud Stream Reference Guide
50. Project Reactor ReferencesProject Reactor References
(Continued)(Continued)
Project Reactor
Intro To Reactor Core
Reactor by Example
Flux
Mono
Reactor 3 Reference Guide
SampleConsumer
Fetch first element which matches
criteria
52. VideosVideos
DevOneConf 2018 - Juergen Hoeller and Josh Long -
Reactive Spring
Under the Hood of Reactive Data Access - Mark Paluch
Webinar: Upgrading to Spring Boot 2.0 - Phil Webb
Spring 5 Playlist