Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
REACTIVE JAVA
REACTIVE

“readily responsive to a stimulus”
Merriam-Webster dictionary
RX JAVA BY NETFLIX
• A library for composing asynchronous and
event-based programs using observable
sequences for the Java VM

• Implementation of Rx Observables from
Microsoft
• Targets the JVM not a language. Currently
supports Java, Groovy, Clojure, and Scala
• https://github.com/Netflix/RxJava
• Apache License, Version 2.0
OBSERVER ->

OBSERVABLE ->
SUBCRIPTIONS AND EVENTS

subscribe

onNext*

onCompleted | onError
t
SERVICE RETURNING OBSERVABLE
public interface ShrödingersCat {
Observable<Boolean> alive();
}
cat
.alive()
.subscribe(status -> System.out.println(status));
SERVICE RETURNING OBSERVABLE
public interface ShrödingersCat {
Observable<Boolean> alive();
}
cat
.alive()
.throttleWithTimeout(250, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.filter(isAlive -> isAlive)
.map(Boolean::toString)
.subscribe(status -> display.display(status));
OBSERVER
public interface Observer<T> {
void onCompleted();
void onError(Throwable e);
void onNext(T args);
}
SUBSCRIPTION
public interface Subscription {
void unsubscribe();
}
CREATING OBSERVABLES
Observable<Boolean> watchTheCat =
Observable.create(observer -> {
observer.onNext(cat.isAlive());
observer.onCompleted();
return Subscriptions.empty();
});

• Executes all code when subscribed
• Not asynchronous, not really a stream
CREATING OBSERVABLES
Observable.create(observer -> {
Future<?> future = executorService.submit(() -> {
observer.onNext(cat.isAlive());
observer.onCompleted();
});
return Subscriptions.from(future);
});

•
•
•
•

Executes code in separate thread (from thread pool executorService)
Stream of events is delivered by the executor thread
Thread calling onNext() runs all the operations defined on observable
Future is cancelled if client unsubscribes
MARBLE DIAGRAM
MERGE(OBSERVABLE...)
CONCAT(OBSERVABLE...)
DEBOUNCE(LONG TIEMOUT, TIMEUNIT TU)
ZIP(OBSERVABLE, OBSERVABLE, FUNC2)
HOW WE USE IT – DATA FILE DISCOVERY
Amazon S3

cache

cache

Disk

cache

mergeDelayError

Memory

More Related Content

Introduction to Reactive Java