A ผู้เผยแพร่ เป็นผู้ให้บริการขององค์ประกอบที่จัดลำดับจำนวนไม่ จำกัด เผยแพร่ตามความต้องการที่ได้รับจากสมาชิก สำนักพิมพ์
public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); }
กฎสำหรับอินเทอร์เฟซผู้เผยแพร่:
- จำนวนรวมของ onNext() วิธีการส่งสัญญาณโดย ผู้เผยแพร่ ถึง สมาชิก ต้องน้อยกว่าหรือเท่ากับจำนวนองค์ประกอบทั้งหมดที่ร้องขอโดยสมาชิก การสมัคร ตลอดเวลา
- A สำนักพิมพ์ อาจส่งสัญญาณน้อยลง onNext() เมธอดกว่าที่ร้องขอ และยุติ การสมัครสมาชิก โดยเรียก onComplete() หรือ onError() วิธีการ
- onSubscribe() , onNext() , onError() และ onComplete() วิธีการส่งสัญญาณไปยัง สมาชิก ต้องส่งสัญญาณเป็นลำดับ
- หากผู้เผยแพร่ล้มเหลว ผู้เผยแพร่จะต้องส่งสัญญาณ onError() วิธีการ
- หากผู้เผยแพร่โฆษณายุติได้สำเร็จ ผู้เผยแพร่จะต้องส่งสัญญาณ onComplete() วิธีการ
- หากผู้เผยแพร่ให้สัญญาณ onError() หรือ onComplete() วิธีการใน สมาชิก จะต้องยกเลิกการสมัครเป็นสมาชิก
- เมื่อสถานะเทอร์มินัลส่งสัญญาณแล้ว (onError() , onComplete() ) จะต้องไม่มีสัญญาณเกิดขึ้นอีก
- หากการสมัครถูกยกเลิก สมาชิกจะต้องหยุดการส่งสัญญาณ
- Publisher.subscribe() เมธอดต้องเรียก onSubscribe() วิธีการของสมาชิกที่ให้ไว้ก่อนที่จะส่งสัญญาณอื่น ๆ ไปยัง สมาชิก และกลับมาเป็นปกติ ยกเว้นเมื่อ Subscriber ที่ให้มานั้นเป็นโมฆะ ในกรณีนี้จะต้องส่ง NullPointerException ถึงผู้โทร
- Publisher.subscribe() เมธอดอาจโทรได้หลายครั้งตามต้องการกับ Subscriber คนละคนในแต่ละครั้ง
- A ผู้เผยแพร่ อาจสนับสนุนสมาชิกหลายคนและตัดสินใจว่าแต่ละการสมัครสามารถเป็น unicast . ได้หรือไม่ หรือ มัลติคาสต์ .