Subscriber इंटरफेस onNext() विधि के माध्यम से आइटम प्राप्त करने के लिए पब्लिशर्स की सदस्यता लेता है, onError() विधि के माध्यम से त्रुटि संदेश, या onComplete() विधि के माध्यम से एक संकेत कि अब और आइटम की अपेक्षा नहीं की जाती है। उनमें से किसी भी चीज के होने से पहले, पब्लिशर onSubscription() विधि को कॉल करता है।
public interface Subscriber<T> { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete(); } Subscriber इंटरफेस के नियम:
- एक Subscriber को onNext() सिग्नल प्राप्त करने के लिए Subscription.request(long n) विधि के माध्यम से कॉल करना चाहिए।
- Subscriber.onComplete() और Subscriber.onError(Throwable t) विधियों को Subscription या Publisher पर किसी भी विधि को कॉल नहीं करना चाहिए।
- Subscriber.onComplete() और Subscriber.onError(Throwable t) विधियों को सिग्नल प्राप्त होने के बाद Subscription को रद्द मानना चाहिए।
- एक Subscriber को onSubscribe() सिग्नल के बाद दिए गए Subscription पर Subscription.cancel() विधि को कॉल करना चाहिए यदि उसके पास पहले से ही एक सक्रिय Subscription है।
- एक Subscriber को Subscription.cancel() विधि को कॉल करना चाहिए यदि Subscription की अब आवश्यकता नहीं है।
- एक Subscriber यह सुनिश्चित करता है कि इसके Subscription के request और cancel विधियों पर सभी कॉल क्रमिक रूप से किए जाते हैं।
- एक Subscriber को Subscription.cancel() विधि को कॉल करने के बाद एक या अधिक onNext() सिग्नल प्राप्त होने चाहिए यदि अभी भी अनुरोधित तत्व लंबित हैं। यह विधि अंतर्निहित सफाई संचालन को तुरंत करने की गारंटी नहीं देती।
- एक Subscriber को onComplete() सिग्नल Subscription.request(long n) कॉल के साथ या बिना प्राप्त होना चाहिए।
- एक Subscriber को onError() सिग्नल Subscription.request(long n) कॉल के साथ या बिना प्राप्त होना चाहिए।
- एक Subscriber यह सुनिश्चित करता है कि इसके सिग्नल विधियों पर सभी कॉल संबंधित सिग्नल के प्रसंस्करण से पहले होते हैं। इसका मतलब है कि Subscriber को अपने प्रसंस्करण तर्क में सिग्नल को ठीक से प्रकाशित करने का ध्यान रखना चाहिए।
- Subscriber.onSubscribe() को दिए गए Subscriber के लिए अधिकतम एक बार कॉल किया जाना चाहिए।
- onSubscribe(), onNext(), onError() या onComplete() विधियों को कॉल करना सामान्य रूप से वापस लौटना चाहिए, सिवाय जब कोई प्रदान किया गया पैरामीटर null हो, जिस स्थिति में इसे कॉलर को NullPointerException फेंकना चाहिए।