Practical Reactive Streams with Akka and Java

Learn how to build asynchronous, non-blocking reactive streams with back-pressure – a really practical hands-on course
Practical Reactive Streams with Akka and Java
File Size :
4.77 GB
Total length :
8h 35m



Matt Greencroft


Last update




Practical Reactive Streams with Akka and Java

What you’ll learn

What are reactive streams and when should you use them
How to build asynchronous, non-blocking, reative streams with back-pressure
The Akka Streams API and GraphDSL
How to correctly implement asynchronous boundaries and parallelism
How to integrate Akka Actors into reactive streams

Practical Reactive Streams with Akka and Java


Basic Java knowledge
Knowledge of Akka using Java and the Akka Typed API is needed
This is a follow on course to the “Practical Java concurrency with the Akka Actor Model” course


This course builds on the “Practical Java concurrency with the Akka Actor Model” course and will extend your knowledge of using the actor model with Akka and Java to create reactive streams.Reactive Streams are an essential tool in building real-world concurrent applications with the actor model – they allow us to build more complex processing scenarios, deal with varying data loads effectively, and provide the foundation for connecting our applications to external systems (which is covered in the Akka Http course).For developers new to this technology it can be tough to get started, so in this course we cover everything from scratch. We build up the knowlege step by step, meaning you’ll have no problems following along and understanding everything we do. The course is full of practical real-world scenarios – we’ll be taking the blockchain mining application that we built in the Practical Java concurrency with the Akka Actor Model course a few steps further to make it even more realistic.Please note that although Akka is built in Scala, no Scala knowledge is needed for this course – the course covers Akka with Java and we won’t be writing any Scala code.This course covers the newer Akka Typed API only.


Section 1: Chapter 1 – Introduction

Lecture 1 What are reactive streams?

Lecture 2 Course files

Lecture 3 How to get support for this course

Section 2: Chapter 2 – Creating our first stream

Lecture 4 A note about external sources

Lecture 5 Using the Akka libraries

Lecture 6 Creating a source

Lecture 7 Creating a sink

Lecture 8 Creating a flow

Lecture 9 Building and running a graph

Section 3: Chapter 3 – Simple Sources and Sinks

Lecture 10 Finite Sources

Lecture 11 Infinite Sources

Lecture 12 Basic source operators

Lecture 13 Creating sinks

Lecture 14 Graph convenience methods

Section 4: Chapter 4 – Simple Flows

Lecture 15 Map and Filter

Lecture 16 MapConcat

Lecture 17 Grouped

Lecture 18 Flows of generic data types

Lecture 19 Combining flows with sinks and sources

Section 5: Chapter 5 – Exercise 1 – Big Primes

Lecture 20 Exercise

Lecture 21 Walkthrough

Section 6: Chapter 6 – Materialized values

Lecture 22 What are materialized values?

Lecture 23 The fold method and selecting a materialized value for the graph

Lecture 24 Terminating the actor system

Lecture 25 The reduce method

Section 7: Chapter 7 – Stream lifecycles

Lecture 26 Re-using graph objects

Lecture 27 Converting infinite streams to finite streams with take and limit

Lecture 28 The takeWhile and takeWithin functions

Section 8: Chapter 8 – Logging

Lecture 29 Logging elements in a stream

Section 9: Chapter 9 – Back pressure and graph performance

Lecture 30 Asynchronous boundaries

Lecture 31 Introducing back-pressure

Lecture 32 Adding buffers to the graph

Lecture 33 Other overflow strategies

Lecture 34 Parallelism

Section 10: Chapter 10 – Exercise 2 – monitoring vehicle speed

Lecture 35 Instructions to create an optimised graph with a materalised value

Lecture 36 Walkthrough

Section 11: Chapter 11 – The GraphDSL

Lecture 37 Why do we need the GraphDSL?

Lecture 38 Introducing the GraphDSL Syntax

Lecture 39 Constructing a simple Graph using the GraphDSL

Lecture 40 Understanding the Graph Construction and introducing Asynchronous Boundaries

Section 12: Chapter 12 – Complex flow types

Lecture 41 Introducing fan-in and fan-out shapes

Lecture 42 Broadcast and merge

Lecture 43 Using Balance for parallelilsm

Lecture 44 Exercise 3 – implementing parallelism in GraphDSL

Lecture 45 Uniform fan-in and fan-out shapes

Lecture 46 Non uniform fan-in and fan-out shapes

Section 13: Chapter 13 – Graphs with multiple sources and sinks

Lecture 47 Combining sources with a fan-in shape

Lecture 48 Sending to an interim sink with alsoTo

Lecture 49 Diverting outliers to a different sink with divertTo

Section 14: Chapter 14 – Non-runnable or partial graphs

Lecture 50 Creating and combining open shapes

Lecture 51 Using open shapes outside the graphDSL

Section 15: Chapter 15 – Using actors in graphs

Lecture 52 Adding an actor to our project

Lecture 53 Using actors as flows

Lecture 54 Using actors as sinks

Section 16: Chapter 16 – Advanced backpressure

Lecture 55 Conflate

Lecture 56 Extrapolate and expand

Section 17: Chapter 17 – The java flow package

Lecture 57 Java’s reactive streams interfaces

Section 18: Chapter 18 – Case Study – Blockchain mining

Lecture 58 Introducing the case study

Lecture 59 Exercise 4 – receive transactions with backpressure

Lecture 60 Walkthrough

Lecture 61 Exercise 5 – mine using actors and apply the result

Lecture 62 Walkthrough

Lecture 63 Creating a circular graph

Section 19: Appendix

Lecture 64 A simple introduction to blockchains

Lecture 65 Bonus lecture

Novice and experienced Java developers who need to enhance their concurrent programming skills.,Programmers who need to implement reactive streams

Course Information:

Udemy | English | 8h 35m | 4.77 GB
Created by: Matt Greencroft

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top