Flow API जावा 9 में Reactive Streams विशिष्टता से मेल खाता है, जो एक वास्तविक मानक है। इसमें इंटरफेस का एक न्यूनतम सेट होता है जो एसिंक्रोनस पब्लिकेशन और सब्सक्रिप्शन के मूल को कैप्चर करता है।
नीचे Flow API के प्रमुख इंटरफेस हैं:
1) Flow.Publisher: यह सब्सक्राइबर्स के उपभोग के लिए आइटम्स का उत्पादन करता है, और इसमें केवल एक मेथड होता है: subscribe(Subscriber), जिसका उद्देश्य स्पष्ट होना चाहिए।
सिंटैक्स
void subscribe(Flow.Subscriber super T> subscriber)
2) Flow.Subscriber: यह पब्लिशर्स (आमतौर पर केवल एक) को सब्सक्राइब करता है ताकि आइटम्स प्राप्त कर सके (onNext(T) मेथड के माध्यम से), एरर मैसेजेस (onError(Throwable)), या एक सिग्नल कि कोई और आइटम अपेक्षित नहीं हैं (onComplete())। उनमें से किसी भी चीज के होने से पहले, पब्लिशर onSubscription(Subscription) मेथड को कॉल करता है।
सिंटैक्स
void onSubscribe(Flow.Subscription subscription) void onNext(T item) void onError(Throwable throwable) void onComplete()
3) Flow.Subscription: एक पब्लिशर और एक सब्सक्राइबर के बीच कनेक्शन। सब्सक्राइबर इसका उपयोग अधिक आइटम्स का अनुरोध करने (request(long)) या कनेक्शन तोड़ने (cancel()) के लिए कर सकता है।
सिंटैक्स
void request(long n) void cancel()
Flow API के लिए निष्पादन चरण:
- सबसे पहले, हमें एक Publisher और एक Subscriber बनाने की आवश्यकता है।
- Publisher:: subscribe के साथ सब्सक्राइबर को सब्सक्राइब करें।
- पब्लिशर एक Subscription बनाता है और इसे Subscriber::onSubscription के साथ कॉल करता है, ताकि सब्सक्राइबर सब्सक्रिप्शन को स्टोर कर सके।
- कुछ बिंदु पर, सब्सक्राइबर आइटम्स की संख्या का अनुरोध करने के लिए Subscription::request को कॉल करता है।
- पब्लिशर Subscriber::onNext को कॉल करके सब्सक्राइबर को आइटम्स सौंपना शुरू करता है। यह कभी भी अनुरोधित संख्या से अधिक आइटम्स पब्लिश नहीं करता।
- पब्लिशर किसी बिंदु पर मुसीबत में पड़ सकता है और क्रमशः Subscriber::onComplete या Subscriber::onError को कॉल कर सकता है।
- सब्सक्राइबर या तो समय-समय पर अधिक आइटम्स का अनुरोध जारी रख सकता है या Subscription:: cancel को कॉल करके कनेक्शन काट सकता है।