Cold এবং Hot Observables এর সাথে Subject এর ব্যবহার

Subject এর ধারণা - আরএক্সজাভা (RxJava) - Java Technologies

287

RxJava-তে Cold Observable এবং Hot Observable ডেটা স্ট্রিমের দুইটি ভিন্ন ধরন। এগুলো asynchronous ডেটা emission পরিচালনা করে ভিন্ন উপায়ে। এর সাথে, Subject ব্যবহার করে Observables এবং Observers-এর মধ্যে ব্রিজ তৈরি করা যায়।


Cold Observable

  • Cold Observables subscriber-এর জন্য আলাদা data stream তৈরি করে।
  • Data emission তখনই শুরু হয় যখন কোনো subscriber Observable-এ subscribe করে।
  • প্রতিটি subscriber একই data stream পুনরায় পায়।

উদাহরণ: Cold Observable

import io.reactivex.rxjava3.core.Observable;

public class ColdObservableExample {
    public static void main(String[] args) {
        Observable<Integer> coldObservable = Observable.just(1, 2, 3);

        // প্রথম subscriber
        coldObservable.subscribe(item -> System.out.println("Subscriber 1: " + item));

        // দ্বিতীয় subscriber
        coldObservable.subscribe(item -> System.out.println("Subscriber 2: " + item));
    }
}

Output:

Subscriber 1: 1
Subscriber 1: 2
Subscriber 1: 3
Subscriber 2: 1
Subscriber 2: 2
Subscriber 2: 3

বৈশিষ্ট্য:

  • প্রতিটি subscriber ডেটা emission পুনরায় শুরু করে।
  • API calls, database queries ইত্যাদিতে ব্যবহৃত হয়।

Hot Observable

  • Hot Observables subscriber-এমিশনের সময়ই ডেটা স্ট্রিম তৈরি করে।
  • একটি shared data stream ব্যবহার করা হয়।
  • নতুন subscriber আগে emitted ডেটা পায় না, কেবল নতুন ডেটা পায়।

উদাহরণ: Hot Observable (Subject ব্যবহার করে)

import io.reactivex.rxjava3.subjects.PublishSubject;

public class HotObservableExample {
    public static void main(String[] args) {
        PublishSubject<Integer> hotObservable = PublishSubject.create();

        // প্রথম subscriber
        hotObservable.subscribe(item -> System.out.println("Subscriber 1: " + item));

        // ডেটা emission শুরু
        hotObservable.onNext(1);
        hotObservable.onNext(2);

        // দ্বিতীয় subscriber যোগ করা
        hotObservable.subscribe(item -> System.out.println("Subscriber 2: " + item));

        hotObservable.onNext(3);
        hotObservable.onComplete();
    }
}

Output:

Subscriber 1: 1
Subscriber 1: 2
Subscriber 1: 3
Subscriber 2: 3

বৈশিষ্ট্য:

  • নতুন subscriber পূর্বে emitted ডেটা পায় না।
  • UI events, sensor data ইত্যাদির জন্য উপযুক্ত।

Subject-এর ভূমিকা

Subject RxJava-তে একটি বিশেষ কম্পোনেন্ট, যা Observable এবং Observer দুটোরই বৈশিষ্ট্য বহন করে। এটি Hot Observable তৈরিতে ব্যবহৃত হয়।

প্রধান প্রকারের Subject

  1. PublishSubject
    • শুধুমাত্র নতুন subscribers-এর জন্য নতুন emitted ডেটা পাঠায়।
  2. BehaviorSubject
    • সর্বশেষ emitted ডেটা এবং এর পরে নতুন ডেটা পাঠায়।
  3. ReplaySubject
    • পূর্বে emitted সমস্ত ডেটা এবং পরবর্তী নতুন ডেটা পাঠায়।
  4. AsyncSubject
    • শুধুমাত্র শেষ emitted ডেটা পাঠায় (completion signal-এর পরে)।

উদাহরণ: BehaviorSubject

import io.reactivex.rxjava3.subjects.BehaviorSubject;

public class BehaviorSubjectExample {
    public static void main(String[] args) {
        BehaviorSubject<String> behaviorSubject = BehaviorSubject.create();

        // প্রথম subscriber যোগ করা
        behaviorSubject.subscribe(item -> System.out.println("Subscriber 1: " + item));

        behaviorSubject.onNext("A");
        behaviorSubject.onNext("B");

        // দ্বিতীয় subscriber যোগ করা
        behaviorSubject.subscribe(item -> System.out.println("Subscriber 2: " + item));

        behaviorSubject.onNext("C");
        behaviorSubject.onComplete();
    }
}

Output:

Subscriber 1: A
Subscriber 1: B
Subscriber 2: B
Subscriber 1: C
Subscriber 2: C

Cold vs Hot Observable তুলনা

বৈশিষ্ট্যCold ObservableHot Observable
Data EmissionSubscribe করার পর শুরু হয়।নিরবচ্ছিন্নভাবে emission হয়।
Subscribersপ্রতিটি subscriber নতুন স্ট্রিম পায়।একই স্ট্রিম শেয়ার করে।
Example Use CasesAPI calls, database queries।UI events, sensor data।

উপসংহার

  • Cold Observable: প্রতিটি subscriber-এর জন্য ডেটা পুনরায় প্রদান করে।
  • Hot Observable: নতুন subscriber-এর জন্য কেবল নতুন emitted ডেটা প্রদান করে।
  • Subject ব্যবহার করে Observables-কে Hot করা সম্ভব, এবং এটি Observables এবং Observers-এর মধ্যে ব্রিজ হিসেবে কাজ করে।

আপনার প্রয়োজন অনুযায়ী Cold বা Hot Observables নির্বাচন করে ডেটা স্ট্রিম পরিচালনা করুন।

Content added By
Promotion

Are you sure to start over?

Loading...