Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10)...
Transcript of Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10)...
![Page 1: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/1.jpg)
![Page 2: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/2.jpg)
![Page 3: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/3.jpg)
Reactive Manifesto
![Page 4: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/4.jpg)
•
•
•
•
![Page 5: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/5.jpg)
![Page 6: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/6.jpg)
![Page 7: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/7.jpg)
![Page 8: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/8.jpg)
•
![Page 9: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/9.jpg)
• onNext
• onCompleted
• onError
onNext
onNext
onNext
onCompleted
![Page 10: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/10.jpg)
• onNext
• onCompleted
• onError
onNext
onNext
onError
![Page 11: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/11.jpg)
• Observable.from
• Observable.just
•• Observable.interval , Observable.range , Observable.empty
Observable<Long> intervalObservable = Observable.interval(500L, TimeUnit.MILLISECODS);
Observable<Integer> rangeObservable = Observable.range(1, 10);
Observable<Character> justObservable = Observable.just('R', 'x', 'J', 'a', 'v', 'a');
List<String> list = Arrays.asList("blue", "red", "green", "yellow", "orange");
Observable<String> listObservable = Observable.from(list)
![Page 12: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/12.jpg)
• Observable.create
public static Observable<SomeDataType> getData(String someParameter) {
return Observable.create(subscriber -> {
try {
SomeDataType result = SomeService.getData(someParameter);
subscriber.onNext(result);
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
});
}
![Page 13: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/13.jpg)
• observableInstance.subscribe
observableInstance.subscribe(new Observer<SomeDataType>() {
@Override
public void onNext(SomeDataType message) {
// Do something on each Message received
}
@Override
public void onError(Throwable error) {
// Do something on Error
}
@Override
public void onCompleted() {
// Do something when Observable completes
}
});
![Page 14: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/14.jpg)
• observableInstance.subscribe
observableInstance.subscribe(
(SomeDataType message) -> {/*onNext*/},
(Throwable error) -> {/*onError*/},
() -> {/*onCompleted*/});
![Page 15: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/15.jpg)
![Page 16: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/16.jpg)
•
••
•
•
•
![Page 17: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/17.jpg)
•
•
••
••
![Page 18: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/18.jpg)
•
•
•
•
observableInstance.filter(element -> element < 10)
observableInstance.timeout(100, TimeUnit.MILLISECONDS)
observableInstance.map(number -> number * number)
Observable<String> mergedObservable = Observable
.merge(firstObservable, secondObservable, thirdObservable);
![Page 19: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/19.jpg)
Observable.range(1,9)
.skipWhile(element -> element < 5)
.take(3)
.reduce((elem1, elem2) -> elem1 + elem2)
.subscribe(result -> /*do something*/)
![Page 20: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/20.jpg)
![Page 21: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/21.jpg)
• try/catch
•
• onError
•
onNext
onNext
onError
![Page 22: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/22.jpg)
•
•• onErrorReturn , onErrorResumeNext, retry
mainObservable.onErrorReturn(throwable -> {
System.out.println("The original feed failed with" + throwable);
return oneMoreMessage;
}).subscribe(data -> {/* doSomething */});
mainObservable.onErrorResumeNext(throwable -> {
System.out.println("The original feed failed with" + throwable);
return backupObservable;
}).subscribe(data -> {/* doSomething */});
![Page 23: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/23.jpg)
![Page 24: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/24.jpg)
•
•
•
•
![Page 25: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/25.jpg)
main
![Page 26: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/26.jpg)
main
observable.subscribe
(onNext, onCompleted)
![Page 27: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/27.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
![Page 28: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/28.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
remoteService.getData
![Page 29: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/29.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
subscriber.onNext(data)
![Page 30: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/30.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
subscriber.onNext(data)
subscriber.onNext
![Page 31: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/31.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
![Page 32: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/32.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
subscriber.onCompleted
![Page 33: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/33.jpg)
main
observable.subscribe
(onNext, onCompleted)
observable.subscribe
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
![Page 34: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/34.jpg)
main
observable.subscribe
(onNext, onCompleted)
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
![Page 35: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/35.jpg)
observable.subscribe
(onNext, onCompleted)
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
![Page 36: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/36.jpg)
• Observable
• subscribeOn(Scheduler)
• observeOn(Scheduler)
• Schedulers
• immediate –
• newThread –
• trampoline –
• io –
• computation –
![Page 37: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/37.jpg)
![Page 38: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/38.jpg)
observable
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(onNext, onCompleted)
![Page 39: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/39.jpg)
observable
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(onNext, onCompleted)
remoteService.getData()
subscriber.onNext(data)
![Page 40: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/40.jpg)
observable
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(onNext, onCompleted)
remoteService.getData()
subscriber.onNext(data)
![Page 41: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/41.jpg)
observable
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(onNext, onCompleted)
remoteService.getData()
subscriber.onNext(data)
subscriber.onCompleted()
![Page 42: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/42.jpg)
![Page 43: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/43.jpg)
•• subscribe
•• unsubscribe
![Page 44: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/44.jpg)
•
Subscription subscription = observableInstance.subscribe(
(Long message) -> {/*onNext*/},
(Throwable error) -> {/*onError*/},
() -> {/*onCompleted*/});
// Do some logic;
subscription.unsubscribe();
![Page 45: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/45.jpg)
•
observableInstance.subscribe(new Subscriber<Long>() {
@Override
public void onNext(Long message) {
// Do something on each Message received
unsubscribe();
}
@Override
public void onError(Throwable e) {
// Do something on Error
}
@Override
public void onCompleted() {
// Do something when Observable completes
}
});
![Page 46: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/46.jpg)
![Page 47: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number](https://reader030.fdocuments.in/reader030/viewer/2022040610/5ed22f3803a55d2bde0b60b6/html5/thumbnails/47.jpg)