imperative to reactive web applications

62

Upload: spring-io

Post on 07-Jan-2017

1.352 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Imperative to Reactive Web Applications
Page 2: Imperative to Reactive Web Applications
Page 3: Imperative to Reactive Web Applications

Reactive Programmingfor Java developers

Part 1

Page 4: Imperative to Reactive Web Applications

Long RunningShift ToConcurrency

Page 5: Imperative to Reactive Web Applications

10 years ago

Today

Page 6: Imperative to Reactive Web Applications
Page 7: Imperative to Reactive Web Applications
Page 8: Imperative to Reactive Web Applications

Design async API with Java Futures

Page 9: Imperative to Reactive Web Applications

...

...

Page 10: Imperative to Reactive Web Applications
Page 11: Imperative to Reactive Web Applications

...

Page 12: Imperative to Reactive Web Applications
Page 13: Imperative to Reactive Web Applications

...

...

Page 14: Imperative to Reactive Web Applications
Page 15: Imperative to Reactive Web Applications

...

...

Page 16: Imperative to Reactive Web Applications

...

...

Page 17: Imperative to Reactive Web Applications

...

...

Page 18: Imperative to Reactive Web Applications
Page 19: Imperative to Reactive Web Applications
Page 20: Imperative to Reactive Web Applications

Async return valuesas a stream?

Page 21: Imperative to Reactive Web Applications
Page 22: Imperative to Reactive Web Applications

Return type Use case Notificationsvoid Success onComplete()

void Failure onError(Throwable)

User Match onNext(User), onComplete()

User No match onComplete()

User Failure onError(Throwable)

List<User> Two matches onNext(User), onNext(User), onComplete()

List<User> No match onComplete()

List<User> Failure onError(Throwable)

Page 23: Imperative to Reactive Web Applications

Java 8 Stream

Page 24: Imperative to Reactive Web Applications

Java 8 Stream

Page 26: Imperative to Reactive Web Applications

Reactive Streams

Page 27: Imperative to Reactive Web Applications

public interface Subscriber<T> {

void onSubscribe(Subscription sub);

void onNext(T item);

void onError(Throwable ex);

void onComplete();

}

public interface Subscription {

void request(long n);

void cancel();

}

public interface Publisher<T> {

void subscribe(Subscriber<? super T> subscriber);

}

Reactive Streams

Page 28: Imperative to Reactive Web Applications

Project Reactor

Page 29: Imperative to Reactive Web Applications

Mono [0..1] sequence

Page 30: Imperative to Reactive Web Applications
Page 31: Imperative to Reactive Web Applications
Page 32: Imperative to Reactive Web Applications
Page 33: Imperative to Reactive Web Applications
Page 34: Imperative to Reactive Web Applications

onSubscribe

request(unbounded)

onNext(User: Jason)

onNext(User: Jay)

...

onComplete()

Page 35: Imperative to Reactive Web Applications
Page 36: Imperative to Reactive Web Applications

onSubscribe

request(2)

onNext(User: Jason)

onNext(User: Jay)

request(2)

onNext(User: Joe)

onNext(User: John)

...

Page 37: Imperative to Reactive Web Applications

ReactiveWeb Applications

Part 2

Page 38: Imperative to Reactive Web Applications

public UserRepositoryImpl implements UserRepository {

public Mono<User> findUser(Long id) {

|

}

}

Page 39: Imperative to Reactive Web Applications
Page 40: Imperative to Reactive Web Applications
Page 41: Imperative to Reactive Web Applications
Page 42: Imperative to Reactive Web Applications
Page 43: Imperative to Reactive Web Applications
Page 44: Imperative to Reactive Web Applications
Page 45: Imperative to Reactive Web Applications
Page 46: Imperative to Reactive Web Applications
Page 47: Imperative to Reactive Web Applications
Page 48: Imperative to Reactive Web Applications
Page 49: Imperative to Reactive Web Applications

Flux<T> Flux<DataBuffer>

Page 50: Imperative to Reactive Web Applications
Page 51: Imperative to Reactive Web Applications
Page 52: Imperative to Reactive Web Applications
Page 53: Imperative to Reactive Web Applications
Page 54: Imperative to Reactive Web Applications
Page 55: Imperative to Reactive Web Applications
Page 56: Imperative to Reactive Web Applications
Page 61: Imperative to Reactive Web Applications
Page 62: Imperative to Reactive Web Applications