Publisher là provider của số lượng không giới hạn các phần tử sequenced, phát hành theo nhu cầu nhận từ Subscriber. Interface Publisher<T> chịu trách nhiệm phát hành phần tử kiểu T và cung cấp phương thức subscribe() để subscriber kết nối.
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
Quy tắc cho interface Publisher:
- Tổng số phương thức
onNext()do Publisher gửi cho Subscriber phải nhỏ hơn hoặc bằng tổng số phần tử được yêu cầu bởiSubscriptioncủa Subscriber tại mọi thời điểm. - Publisher có thể gửi ít
onNext()hơn yêu cầu, và chấm dứtSubscriptionbằng cách gọionComplete()hoặconError(). - Các phương thức
onSubscribe(),onNext(),onError(),onComplete()gửi cho Subscriber phải được gửi tuần tự (serially). - Nếu Publisher thất bại, phải gửi
onError(). - Nếu Publisher kết thúc thành công, phải gửi
onComplete(). - Nếu Publisher gửi
onError()hoặconComplete()cho Subscriber, thì Subscription của Subscriber phải bị hủy. - Khi trạng thái terminal đã gửi (
onError(),onComplete()), yêu cầu không có tín hiệu nào khác xảy ra. - Nếu Subscription bị hủy, Subscriber phải ngừng được gửi tín hiệu.
Publisher.subscribe()phải gọionSubscribe()trên Subscriber cung cấp trước bất kỳ tín hiệu nào khác và trả về bình thường, trừ khi Subscriber cung cấp là null – lúc đó némNullPointerExceptioncho caller.Publisher.subscribe()có thể gọi bao nhiêu lần tùy ý với Subscriber khác nhau mỗi lần.- Publisher có thể hỗ trợ nhiều Subscriber và quyết định mỗi Subscription là unicast hay multicast.