RxJava - Connectable Operators



Following are the operators which has more precisely control over subscription.

Sr.No. Operator & Description
1

Connect

Instruct a connectable Observable to emit items to its subscribers.

2

Publish

Converts an Observable to connectable Observable.

3

RefCount

Converts a connectable Observable to ordinary Observable.

4

Replay

Ensure same sequence of emitted items to be seen by each subscriber, even after the Observable has begun emitting items and subscribers subscribe later.

Example - Usage of connect operator

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.observables.ConnectableObservable;

// Using connect operator to get connect with ConnectableObservable
public class ObservableTester  {
   public static void main(String[] args) {    
      String[] letters = {"a", "b", "c", "d", "e", "f", "g"};
      final StringBuilder result = new StringBuilder();
      ConnectableObservable<String> connectable = Observable.fromArray(letters).publish();      
      connectable.subscribe(letter -> result.append(letter));
      System.out.println(result.length());
   
      connectable.connect();
      System.out.println(result.length());
      System.out.println(result);
   }
}

Output

Compile and Run the code to verify the following output −

0
7
abcdefg

Example - Usage of refCount operator

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.observables.ConnectableObservable;

// Using refCount operator to convert a ConnectableObservable to Observable
public class ObservableTester  {
   public static void main(String[] args) {    
      String[] letters = {"a", "b", "c", "d", "e", "f", "g"};
      final StringBuilder result = new StringBuilder();
      ConnectableObservable<String> connectable = Observable.fromArray(letters).publish();
      Observable<String> observable = connectable.refCount();
      observable.subscribe(letter -> result.append(letter));
      System.out.println(result.length());
      System.out.println(result);
   }
}

Output

Compile and Run the code to verify the following output −

7
abcdefg
Advertisements