Upload
spring-io
View
1.356
Download
2
Embed Size (px)
Citation preview
Reactive Programmingfor Java developers
Part 1
Long RunningShift ToConcurrency
10 years ago
Today
Design async API with Java Futures
...
...
...
...
...
...
...
...
...
...
...
Async return valuesas a stream?
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)
Java 8 Stream
Java 8 Stream
Reactive Streams
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
Project Reactor
Mono [0..1] sequence
onSubscribe
request(unbounded)
onNext(User: Jason)
onNext(User: Jay)
...
onComplete()
onSubscribe
request(2)
onNext(User: Jason)
onNext(User: Jay)
request(2)
onNext(User: Joe)
onNext(User: John)
...
ReactiveWeb Applications
Part 2
public UserRepositoryImpl implements UserRepository {
public Mono<User> findUser(Long id) {
|
}
}
Flux<T> Flux<DataBuffer>
More HttpServer variants at spring-web/src/test/java