A สมัครสมาชิก สามารถแชร์โดยผู้เผยแพร่หนึ่งรายและสมาชิกหนึ่งรายเพื่อวัตถุประสงค์ในการเป็นสื่อกลาง ข้อมูล แลกเปลี่ยน . นั่นคือเหตุผล subscribe() เมธอดไม่ส่งคืนการสมัครสมาชิกที่สร้างขึ้น แต่จะคืนค่า โมฆะ . การสมัครรับข้อมูลจะถูกส่งต่อไปยังผู้สมัครสมาชิกผ่านทาง onSubscribe() . เท่านั้น วิธีการโทรกลับ อินเทอร์เฟซการสมัครรับข้อมูลมีสองวิธี:request() และ ยกเลิก() .
ไวยากรณ์
public interface Subscription { public void request(long n); public void cancel(); }
กฎสำหรับอินเทอร์เฟซการสมัคร:
- Subscription.request() และ Subscription.cancel() ต้องเรียกเมธอดภายในบริบทสมาชิกเท่านั้น
- การสมัครต้องอนุญาตให้สมาชิกเรียก Subscription.request() เมธอดพร้อมกันจากภายใน onNext() หรือ onSubscribe() วิธีการ
- Subscription.request() เมธอดต้องวางขอบเขตบนในการเรียกซ้ำแบบซิงโครนัสที่เป็นไปได้ระหว่าง ผู้เผยแพร่ และ สมาชิก .
- Subscription.request() วิธีการควรเคารพการตอบสนองของผู้โทรโดยการส่งคืนในเวลาที่เหมาะสม
- Subscription.cancel() เมธอดต้องเคารพการตอบสนองของผู้โทรโดยการส่งคืนในเวลาที่เหมาะสม และต้องปลอดภัยสำหรับเธรด .
- ในขณะที่การสมัครไม่ถูกยกเลิก Subscription.request(long n) เมธอดจะต้องลงทะเบียนองค์ประกอบเพิ่มเติมตามจำนวนที่กำหนดเพื่อผลิตให้กับสมาชิกแต่ละคน
- ในขณะที่การสมัครไม่ถูกยกเลิก Subscription.request(long n) เมธอดต้องเรียก onError() เมธอดด้วย IllegalArgumentException ถ้าอาร์กิวเมนต์คือ <=0
- ในขณะที่การสมัครไม่ถูกยกเลิก Subscription.request(long n) เมธอดอาจเรียก onNext() . พร้อมกัน วิธีการนี้หรือสมาชิกรายอื่น
- ในขณะที่การสมัครไม่ถูกยกเลิก Subscription.request(long n) เมธอดอาจเรียก onComplete() . พร้อมกัน หรือ onError() วิธีการนี้หรือสมาชิกรายอื่น
- แม้ว่าการสมัครจะไม่ถูกยกเลิก Subscription.cancel() วิธีการต้องขอให้ผู้เผยแพร่หยุดการส่งสัญญาณของสมาชิก ไม่จำเป็นต้องดำเนินการให้มีผลกับการสมัครสมาชิกทันที
- แม้ว่าการสมัครจะไม่ถูกยกเลิก Subscription.cancel() เมธอดต้องขอให้ผู้เผยแพร่ยกเลิกการอ้างอิงใด ๆ ไปยังสมาชิกที่เกี่ยวข้อง
- กำลังโทร Subscription.cancel() และ Subscription.request () เมธอดต้องกลับมาเป็นปกติ
- การสมัครสมาชิก ต้องรองรับจำนวนการโทรที่ไม่จำกัดเพื่อขอและรองรับความต้องการสูงสุด 2^63-1 . หากความต้องการเท่ากับหรือมากกว่า 2^63-1 อาจได้รับการพิจารณาโดยผู้จัดพิมพ์ว่า มีประสิทธิภาพ ไม่จำกัด .