创建主题

Creating a Subject

我正在实现一个字节消息反序列化器,它将在调度程序接口上分派反序列化的消息和 return 抛出的所有 Throwable 的可观察对象,以便客户端代码可以处理错误。

该方法的原型草图:

Observable<Throwable> dispatchDeserializedMessages(Observable<byte[]>, Dispatcher)

最近我熟悉 Subject<T, R>,它非常适合这里,例如

Subject<byte[], Throwable> dispatchDeserializedMessages(Dispatcher)

但是没有像 create() 这样可以轻松委托给观察者和可观察对象的便捷方法。所有具体实现都将 TR 统一起来,所以我无法使用其中之一。

所以我的具体问题是:有没有一种方法可以实例化一个合适的 Subject<byte[], Throwable>,它委托给 ObserverObservable?有没有其他方法可以创建这样的 Subject 而不必实现(在必须手动委托每个实现的方法的意义上)整个 SubjectObservableObserver?

切换到 Subject-based API 可能不是最好的主意,因为您将潜在的冷 API 更改为强制性热 API。在您的原始设计中,Throwable 序列的消费者会假设在订阅时,Observable<byte[]> 也会被订阅。

否则,我有一个关于创建 Subjectblog series,但你无法避免使用它们的繁重工作。