Subscriber interface subscribe đến publisher để nhận item qua onNext(), thông báo lỗi qua onError(), hoặc tín hiệu không còn item qua onComplete(). Trước khi những điều đó xảy ra, publisher gọi onSubscription().
public interface Subscriber<T> {
public void onSubscribe(Subscription s);
public void onNext(T t);
public void onError(Throwable t);
public void onComplete();
}
Quy tắc cho interface Subscriber:
- Subscriber phải gọi qua
Subscription.request(long n)để nhận tín hiệuonNext(). Subscriber.onComplete()vàSubscriber.onError(Throwable t)không được gọi method nào trên Subscription hoặc Publisher.Subscriber.onComplete()vàSubscriber.onError(Throwable t)phải coi Subscription đã bị hủy sau khi nhận tín hiệu.- Subscriber phải gọi
Subscription.cancel()trên Subscription cho trước sau tín hiệuonSubscribe()nếu đã có Subscription active. - Subscriber phải gọi
Subscription.cancel()nếu Subscription không còn cần thiết. - Subscriber đảm bảo tất cả gọi trên request và cancel của Subscription được thực hiện tuần tự.
- Subscriber phải nhận một hoặc nhiều tín hiệu
onNext()sau khi gọiSubscription.cancel()nếu vẫn còn phần tử requested pending. Phương thức không đảm bảo thực hiện cleaning ngay lập tức. - Subscriber phải nhận tín hiệu
onComplete()có hoặc không có lời gọiSubscription.request(long n)trước đó. - Subscriber phải nhận tín hiệu
onError()có hoặc không có lời gọiSubscription.request(long n)trước đó. - Subscriber đảm bảo tất cả gọi trên method signal xảy ra trước xử lý tín hiệu tương ứng. Nghĩa là Subscriber phải chăm sóc publish đúng tín hiệu cho logic xử lý.
Subscriber.onSubscribe()phải gọi tối đa một lần cho Subscriber cho trước.- Gọi
onSubscribe(),onNext(),onError()hoặconComplete()phải trả về trừ khi tham số cung cấp là null – lúc đó némNullPointerExceptioncho caller.