All Projects → nurkiewicz → reactor-workshop

nurkiewicz / reactor-workshop

Licence: GPL-3.0 license
Spring Reactor hands-on training (3 days)

Programming Languages

java
68154 projects - #9 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to reactor-workshop

KotlinReactiveMS
An educational project to learn reactive programming with Spring 5 and Kotlin
Stars: ✭ 33 (-71.05%)
Mutual labels:  reactor, webflux
spring-webflux-research
spring webflux research
Stars: ✭ 42 (-63.16%)
Mutual labels:  reactor, webflux
Jetlinks Community
JetLinks 基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor等开发, 是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。
Stars: ✭ 2,405 (+2009.65%)
Mutual labels:  reactor, webflux
kotlin-kafka-and-kafka-streams-examples
Kafka with KafkaReactor and Kafka Streams Examples in Kotlin
Stars: ✭ 33 (-71.05%)
Mutual labels:  reactor, webflux
Spring5Tutorial
Spring 文件的範例資源
Stars: ✭ 36 (-68.42%)
Mutual labels:  reactor, webflux
Pyee
A port of Node.js's EventEmitter to python
Stars: ✭ 236 (+107.02%)
Mutual labels:  concurrency
Among-Us-Love-Couple-Mod
Among Us Love Couple Mod
Stars: ✭ 45 (-60.53%)
Mutual labels:  reactor
Joshuto
ranger-like terminal file manager written in Rust
Stars: ✭ 224 (+96.49%)
Mutual labels:  concurrency
Thespian
Python Actor concurrency library
Stars: ✭ 220 (+92.98%)
Mutual labels:  concurrency
reactive-streams-in-java
Code for "Reactive Streams in Java" book
Stars: ✭ 19 (-83.33%)
Mutual labels:  reactor
simpledbm
SimpleDBM is an Open Source Multi-Threaded Embeddable Transactional Database Engine in Java.
Stars: ✭ 51 (-55.26%)
Mutual labels:  concurrency
threads
Fork threads and wait for their result
Stars: ✭ 28 (-75.44%)
Mutual labels:  concurrency
Polyphony
Fine-grained concurrency for Ruby
Stars: ✭ 234 (+105.26%)
Mutual labels:  concurrency
Reactor-and-Turbine-control-program
This is my Reactor- and Turbine control program for ComputerCraft and BigReactors
Stars: ✭ 18 (-84.21%)
Mutual labels:  reactor
Tosdatabridge
A collection of resources for pulling real-time streaming data off of TDAmeritrade's ThinkOrSwim(TOS) platform; providing C, C++, Java and Python interfaces.
Stars: ✭ 229 (+100.88%)
Mutual labels:  concurrency
java-modern-tech-practice
😎 Java™ modern tech practice sandbox ⏳
Stars: ✭ 43 (-62.28%)
Mutual labels:  reactor
Xenium
A C++ library providing various concurrent data structures and reclamation schemes.
Stars: ✭ 225 (+97.37%)
Mutual labels:  concurrency
cards-hub-evolution
No description or website provided.
Stars: ✭ 68 (-40.35%)
Mutual labels:  reactor
actors
Actor Model library for Dart.
Stars: ✭ 40 (-64.91%)
Mutual labels:  concurrency
BEW-2.5-Strongly-Typed-Languages
💪 Learn and implement the design patterns and best practices that make Go a top choice at high-velocity startups like Lyft, Heroku, Docker, Medium, and more!
Stars: ✭ 14 (-87.72%)
Mutual labels:  concurrency

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].