Programarea reactiva Java. Implementarea si abonarea la un observer
Programarea reactiva Java. Implementarea si abonarea la un observer
Continuam seria noastra de articole despre programarea reactiva in Java. De aceasta data ne uitam la implementarea si abonarea la un observer.
9 Nov 2021
531
Other articles
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA. Persistence cu JPA
Cum sa interogam Kafka Streaming Data?
Procrastinarea. Care sunt avantajele ei?
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA
Procrastinarea
Cerinte. De ce avem nevoie de ele?
Dezvolta-ti abilitatile cu training-urile noastre
Programarea reactiva Java. Implementari
Testarea software. Intrebari tipice si raspunsuri. Continuare
Testarea software. Intrebari tipice si raspunsuri
Implementarea si abonarea la un observer
In Java 9, nu exista implementarea unor fluxuri reactive ci doar o specificatie. Insa, sunt mai multe librarii — implementari ale abordarii reactive. In acest exemplu, folosim libraria RxJava. Ne abonam la un flux de date si definim mai multi handleri, mai exact, metode care vor rula la inceputul procesarii fluxului (onSubscribe), la primirea fiecarui mesaj ulterior (onNext), atunci cand au loc erori (onError), si la finalizarea unui flux (onComplete):
Hai sa ne uitam la ultimul string.
locations.map(String::length).filter(l -> l >= 5).subscribe(observer);
In acest caz, avem 5 (Minsk), 6 (Krakow), 6 (Moscow), 4 (Kiev), 5 (Sofia). Punem un filtru pentru a ramane doar cei peste 5. Obtinem astfel o lista de string lengths care au peste 5 (Kiev dispare). Abonare la fluxul final. Apoi Observer este apelat pentru a reactiona la valorile din fluxul final. Cu fiecare noua valoare, va printa lungimea:
public void onNext(Integer value) {
System.out.println("Length: " + value);
Mai intai, apare Length 5, apoi Length 6.Cand fluxul este finalizat, va fi apelat onComplete, si la final, o sa apara "Done.”:
System.out.println("Done.");
Nu toate fluxurile pot sa completeze. Dar unele pot face asta. Spre exemplu, daca am citi ceva dintr-un fisier, fluxul va completa cand se termina fisierul.
Daca are loc o eroare, putem reactiona:
e.printStackTrace();
Putem astfel sa reactionam in moduri diferite: la valori, inchierea unor fluxuri si erori.
Articolul original poate sa fie citit aici.
Vrei sa inveti sa programezi cu Java sau sa iti imbunatatesti abilitatile de programare in Java? Parcurge cursurile noastre.