+ All Categories
Home > Documents > Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10)...

Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10)...

Date post: 27-May-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
47
Transcript
Page 1: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number
Page 2: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number
Page 3: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

Reactive Manifesto

Page 4: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

Page 5: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number
Page 6: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number
Page 7: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number
Page 8: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

Page 9: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

• 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

• 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

• 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

• 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

• 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

• 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
Page 16: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

••

Page 17: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

••

••

Page 18: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

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

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
Page 21: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

• 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

•• 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
Page 24: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

Page 25: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

main

Page 26: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

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

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

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

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

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

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

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

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

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

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

• 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
Page 38: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

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

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

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

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
Page 43: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

•• subscribe

•• unsubscribe

Page 44: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

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

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
Page 47: Reactive Manifesto - 2017.javacro.hr · observableInstance.filter(element -> element < 10) observableInstance.timeout(100, TimeUnit.MILLISECONDS) observableInstance.map(number

Recommended