A Nhà xuất bản là nhà cung cấp số lượng phần tử theo trình tự không giới hạn xuất bản chúng theo nhu cầu nhận được từ Người đăng ký của mình. Nhà xuất bản
public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); }
Quy tắc dành cho giao diện nhà xuất bản:
- Tổng số onNext () các phương pháp được báo hiệu bởi Nhà xuất bản tới Người đăng ký phải nhỏ hơn hoặc bằng tổng số phần tử mà Đăng ký của Người đăng ký yêu cầu mọi lúc.
- A Nhà xuất bản có thể báo hiệu ít onNext () hơn các phương pháp được yêu cầu và chấm dứt Đăng ký bằng cách gọi onComplete () hoặc onError () phương pháp.
- onSubscribe () , onNext () , onError () và onComplete () các phương thức được báo hiệu cho Người đăng ký phải được báo hiệu nối tiếp.
- Nếu Publisher không thành công, thì Publisher phải báo hiệu onError () phương pháp.
- Nếu Nhà xuất bản kết thúc thành công, thì Nhà xuất bản phải báo hiệu onComplete () phương pháp.
- Nếu Nhà xuất bản báo hiệu onError () hoặc onComplete () trên Người đăng ký thì Đăng ký của Người đăng ký phải bị hủy.
- Khi trạng thái đầu cuối đã báo hiệu ( onError () , onComplete () ), yêu cầu là không được xuất hiện thêm tín hiệu nào nữa.
- Nếu Đăng ký bị hủy, Người đăng ký đó phải ngừng nhận tín hiệu.
- Publisher.subscribe () phương thức phải gọi onSubscribe () trên Người đăng ký được cung cấp trước khi có bất kỳ tín hiệu nào khác cho Người đăng ký đó và trở lại bình thường, ngoại trừ khi Người đăng ký được cung cấp là trống. Trong trường hợp này, nó phải ném NullPointerException cho người gọi.
- Publisher.subscribe () phương thức có thể gọi nhiều lần tùy theo yêu cầu với một Người đăng ký khác mỗi lần.
- A Nhà xuất bản có thể hỗ trợ nhiều Người đăng ký và quyết định xem mỗi Đăng ký có thể là unicast hoặc đa hướng .