• Stars
    star
    135
  • Rank 269,297 (Top 6 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Spring Reactor hands-on training (3 days)

Reactor training

Java CI master Java CI solutions

Spring Reactor hands-on training (3 days)

See also workshop notes.

Day 1: Introduction

  • What is reactive programming
  • Crash course to CompletableFuture and thread pools
  • Introducing Reactor
  • How to create a stream?
    • just(), generate(), create(), fromCallable(), fromStream()
  • Laziness
    • Hot vs. cold
  • Basic operators
    • map(), filter(), filterWhen() flatMap(), handle(), take(), skip()
    • doOn*() operators
    • window(), buffer(), distinct()
    • cast(), ofType(), index()
    • timestamp(), elapsed()
    • zip(), merge()
  • Error handling
    • timeout(), retry*(), retryBackoff()
    • onError*()
  • Blocking and reactive, back and forth
  • Concurrency with blocking code and thread pools
    • subscribeOn(), parallel()
  • Unit testing

Day 2: Reactor advanced

  • Concurrency with non-blocking code
  • Advanced error handling and retries
  • transform() vs. transformDeferred()
  • Advanced operators
    • groupBy(), window()
    • reduce(), scan()
    • expand*()
  • Backpressure
    • onBackpressure*()
  • Processor API
    • Unicast, Emitter, Replay
  • Advanced testing with virtual time
  • Context
  • Speculative execution example
  • RxJava interoperability

Day 3: Practical

  • Comparison to blocking and asynchronous servlets
  • Refactoring existing application to Reactor
  • Spring Boot
    • Reactive database access
    • Reactive controllers
    • WebFilter
    • Global error handling
    • Payload validation
    • Web sockets
  • Streaming data in and out
  • Troubleshooting and debugging
    • checkpoint(), onOperatorDebug(), doOn*()

Reference materials

  1. Reactor 3 Reference Guide
  2. Web on Reactive Stack in Spring Framework Documentation
  3. The "Spring WebFlux Framework" in Spring Boot Reference Guide

Troubleshooting, tips and tricks

IntelliJ test runner

In IntelliJ it's much faster to run tests directly, rather than through Gradle. Go to Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle and select IntelliJ IDEA from Run Tests Using drop-down.

Error Can not connect to Ryuk at localhost:...

Add this environment variable:

TESTCONTAINERS_RYUK_DISABLED=true

See: Disabling Ryuk

Reusing containers in testcontainers

In .testcontainers.properties in your $HOME folder put the following line:

testcontainers.reuse.enable=true

More Repositories

1

polski-w-it

Sล‚owniczek angielsko-polski w IT
Python
488
star
2

async-retry

Asynchronous retrying for Java 7/8
Java
411
star
3

spring-data-jdbc-repository

Spring Data JDBC generic DAO implementation
Java
275
star
4

rxjava-book-examples

Source code of all examples from Reactive Programming with RxJava book
Java
171
star
5

typeof

instanceof operator and Visitor pattern replacement in Java 8
Java
154
star
6

completablefuture

CompletableFuture in Java 8 - asynchronous processing done right
HTML
154
star
7

LazySeq

Lazy sequences implementation for Java 8
Java
131
star
8

download-server

http://www.nurkiewicz.com/2015/06/writing-download-server-part-i-always.html
Java
115
star
9

elastic-flux

ElasticSearch client with Spring and Reactor
Java
69
star
10

books

Poor man's CRUD: jqGrid, REST, AJAX, Spring MVC and JPA in one house
JavaScript
68
star
11

rxjava-workshop

1 day RxJava 2 hands-on workshop
Java
65
star
12

token-bucket

Tenfold increase in server throughput with Servlet 3.0 asynchronous processing
JavaScript
62
star
13

spring-startup-progress

Java
59
star
14

crypto-hall-of-shame

Scams, hacks and fails of cryptocurrencies
43
star
15

spring-rest-wadl

Automatically generating WADL in Spring MVC REST application
Scala
29
star
16

benchmarks

Various caliper benchmarks
Java
28
star
17

jmx-dashboard

Client-side server monitoring with Jolokia and JMX
JavaScript
27
star
18

java8-workshop

Java 8 workshop
HTML
27
star
19

learning-akka

Example Akka-based application integrating with random.org API
Scala
26
star
20

hystrix-demo

Hystrix samples and demonstrations
Groovy
19
star
21

google-location-history

Jupyter Notebook
17
star
22

spring-no-xml

Sandbox project introducing Spring application without XML at all
Java
17
star
23

java-concurrency-workshop

Java
16
star
24

monkeys-grooming

Java
14
star
25

wjug-reactive

Warsaw JUG talk about reactive programming in Java
Java
12
star
26

spring-pitfalls

Typical Spring framework pitfalls and ways to fix them
Scala
12
star
27

awesome-notes

Personal notes, links, code snippets
11
star
28

graphql-server-demo

Java
11
star
29

rx-legacy

RxJava in legacy projects - live coding sessions
Java
10
star
30

ts.class

TypeScript to Java bytecode compiler
Kotlin
10
star
31

nurkiewicz.com

Python
10
star
32

spring-js

JavaScript Spring Framework dynamic languages support
Java
9
star
33

spring-di

The evolution of Spring dependency injection techniques
Scala
7
star
34

logback-feed

Atom/RSS feed publishing logs generated by Logback logging framework
Java
7
star
35

quartz-demo

Quartz tips and tricks
Scala
6
star
36

awesome-reactor

Awesome materials about Project Reactor
6
star
37

try-ipad2

Activiti + Spring + Mule ESB showcase
Java
5
star
38

kafka-scheduler

Sending delayed messages using Kafka as the only storage
Java
5
star
39

brainfuck.clj

brainfuck interpreter and compiler in Clojure
Clojure
5
star
40

junit-exception-assert-rule

JUnit exception assert @Rule
Java
4
star
41

patromierz

4
star
42

spring-oncommit

Kotlin
3
star
43

wjug-money

Mule ESB vs. Apache ServiceMix - Warszawa JUG
Java
3
star
44

json-streaming

Source code for blog article
Java
3
star
45

spring-ns

Spring custom namespace demo
Java
3
star
46

spring-cacheable-benchmark

Repository moved
Java
3
star
47

kata

Scala
2
star
48

scalatron-bot

Scala
2
star
49

nurkiewicz.github.com

JavaScript
2
star
50

recaptcha-spring-integration

Google ReCaptcha Spring Integration
Scala
2
star
51

geecon-2014

Source code from live coding session during GeeCON 2014 conference
Java
1
star
52

256

Redirect from old podcast website to the new one: nurkiewicz.com
HTML
1
star
53

adblock-filters

AdBlock/uBlock filters removing comment sections to get rid of social media distraction
1
star