एक सदस्यता डेटा . की मध्यस्थता के उद्देश्य से ठीक एक प्रकाशक और एक सदस्य द्वारा साझा किया जा सकता है विनिमय . यही कारण है कि सदस्यता लें () विधि बनाई गई सदस्यता वापस नहीं करती है, इसके बजाय शून्य returns लौटाती है . सदस्यता केवल सब्सक्राइबर को ऑनसब्सक्राइब () . के माध्यम से दी जाती है विधि कॉलबैक। सदस्यता इंटरफ़ेस में दो विधियाँ हैं:अनुरोध () और रद्द करें () ।
सिंटैक्स
public interface Subscription { public void request(long n); public void cancel(); }
सदस्यता इंटरफ़ेस के नियम:
- Subscription.request() और सदस्यता रद्द करें () विधियों को केवल इसके सब्सक्राइबर संदर्भ के अंदर ही बुलाया जाना चाहिए।
- सदस्यता को सब्सक्राइबर को Subscription.request() . पर कॉल करने की अनुमति देनी चाहिए onNext() . के भीतर से समकालिक रूप से विधि या ऑनसब्सक्राइब () तरीके।
- Subscription.request() विधि को प्रकाशक . के बीच संभावित तुल्यकालिक पुनरावर्तन पर ऊपरी सीमा लगानी चाहिए और सदस्य ।
- Subscription.request() विधि को समय पर वापस लौटकर अपने कॉलर की जिम्मेदारी का सम्मान करना चाहिए।
- सदस्यता रद्द करें () विधि को समय पर वापस लौटकर अपने कॉलर की जवाबदेही का सम्मान करना चाहिए, और थ्रेड-सुरक्षित होना चाहिए ।
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.request(long n) मेथड को संबंधित सब्सक्राइबर को दिए गए अतिरिक्त तत्वों की एक निश्चित संख्या को पंजीकृत करना होगा।
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.request(long n) विधि को onError() पर कॉल करना चाहिए IllegalArgumentException . के साथ विधि अगर तर्क <=0. . है
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.request(long n) विधि समकालिक रूप से onNext() को कॉल कर सकती है इस या अन्य ग्राहकों पर विधि।
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.request(long n) विधि समकालिक रूप से पूर्ण () पर कॉल कर सकती है या त्रुटि पर() इस या अन्य ग्राहकों पर तरीके।
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.cancel() विधि को प्रकाशक से अपने सब्सक्राइबर को संकेत देना बंद करने का अनुरोध करना चाहिए। सदस्यता को तुरंत प्रभावित करने के लिए कार्रवाई की आवश्यकता नहीं हो सकती है।
- जबकि सदस्यता रद्द नहीं की गई है, Subscription.cancel() मेथड को प्रकाशक से संबंधित सब्सक्राइबर के किसी भी संदर्भ को छोड़ने का अनुरोध करना चाहिए।
- कॉलिंग Subscription.cancel() और सदस्यता.अनुरोध () विधियों को सामान्य रूप से वापस आना चाहिए।
- द सदस्यता 2^63-1 . तक की मांग का अनुरोध और समर्थन करने के लिए असीमित संख्या में कॉल का समर्थन करना चाहिए . यदि प्रकाशक द्वारा 2^63-1 के बराबर या उससे अधिक की मांग को प्रभावी रूप से माना जा सकता है अनबाउंड ।