কম্পিউটার টিউটোরিয়াল

জাভা ৯-এ Publisher ইন্টারফেসের নিয়মাবলী

একটি Publisher হলো সিকোয়েন্সড এলিমেন্টের অনবウンサー সংখ্যার প্রদানকারী, যা সাবস্ক্রাইবারের পাওয়া ডিমান্ড অনুযায়ী পাবলিশ করে। Publisher<T> ইন্টারফেস টাইপ T-এর এলিমেন্ট পাবলিশ করার জন্য দায়বদ্ধ এবং সাবস্ক্রাইবারের জন্য subscribe() মেথড প্রদান করে যাতে সেগুলো এর সাথে কানেক্ট করতে পারে।

public interface Publisher<T> {
    public void subscribe(Subscriber<? super T> s);
}

Publisher ইন্টারফেসের নিয়মাবলী:

  • Publisher-দ্বারা Subscriber-কে সিগন্যাল করা মোট onNext() মেথডের সংখ্যা সব সময় Subscriber-এর Subscription-এর অনুরোধ করা মোট এলিমেন্টের সংখ্যা থেকে কম বা সমান হতে হবে।
  • একটি Publisher অনুরোধের চেয়ে কম onNext() মেথড সিগন্যাল করতে পারে, এবং onComplete() বা onError() মেথড কল করে Subscription টার্মিনেট করতে পারে।
  • onSubscribe(), onNext(), onError(), এবং onComplete() মেথডগুলো যেসব Subscriber-কে সিগন্যাল করা হয়, সেগুলো সিরিয়ালি সিগন্যাল করা উচিত।
  • যদি Publisher ফেল করে, তবে এটি অবশ্যই onError() মেথড সিগন্যাল করতে হবে।
  • যদি Publisher সফলভাবে টার্মিনেট করে, তবে এটি অবশ্যই onComplete() মেথড সিগন্যাল করতে হবে।
  • যদি Publisher onError() বা onComplete() মেথড Subscriber-এ সিগন্যাল করে, তবে Subscriber-এর Subscription অবশ্যই ক্যানসেল করা উচিত।
  • একবার টার্মিনাল স্টেট সিগন্যাল হয়ে গেলে (onError(), onComplete()), কোনো ফার্ডার সিগন্যাল ঘটতে পারবে না এটি রিকোয়ার্ড।
  • যদি Subscription ক্যানসেল হয়, তবে এর Subscriber অবশ্যই সিগন্যাল করা বন্ধ করবে।
  • Publisher.subscribe() মেথড অবশ্যই প্রদত্ত Subscriber-এ onSubscribe() মেথড কল করতে হবে অন্য কোনো সিগন্যালের আগে এবং নরমালি রিটার্ন করতে হবে, এক্সসেপ্ট যখন প্রদত্ত Subscriber null হয়। এই কেসে, এটি অবশ্যই কলারের কাছে NullPointerException থ্রো করতে হবে।
  • Publisher.subscribe() মেথড যতগুলো বার ডাকতে পারে প্রতিবার ভিন্ন Subscriber के সাথে।
  • একটি Publisher একাধিক Subscriber সাপোর্ট করতে পারে এবং ডিসাইড করতে পারে যে প্রতিটি Subscription ইউনিকাস্ট নাকি মাল্টিকাস্ট।
  1. জাভা ৯-এ JShell-এ পালন করণীয় নিয়মগুলো

  2. জাভা ৯-এ Subscription ইন্টারফেসের নিয়মাবলী

  3. জাভা ৯-এ @Deprecated অ্যানোটেশনের উন্নতি

  4. জাভাতে FocusListener ইন্টারফেসের গুরুত্ব