【发布时间】:2018-12-14 17:39:06
【问题描述】:
免责声明:我是 Rx.Net 的新手。
我想了解使用 Rx.Net 从服务器消费事件的最佳方式。目前,我有一个包含 rx 主题的消费者类,将消费更新委托给下游消费者:
Event Listener/Processor:
public IObservable<IUpdate> UpdateStream => _subject?.AsObservable();
try
{
// ... processing ...
_subject.OnNext(update); // update is the variable
}
catch (Exception ex)
{
_subject.OnError(ex);
}
下游用户:
public void Subscribe()
{
_eventListener.UpdateStream.Subscribe(update =>
{
_fooProcessor.Process(update);
},
ex =>
{
// log
Subscribe(); // an effort to resubscribe lost subscription
},
() => { // log completion (optional)...}
}
我注意到subject抛出异常onNext(已经添加了具有相同键的项目),其中,subject.HasObservers属性为false(即下游订阅列表丢失)。 OnError 代码行确实命中,但下游订阅者没有收到通知(因为订阅丢失)。
我尝试使用 Observer.EventPattern 来监听消费事件并创建被下游订阅者消费的 observable;但这也不起作用(在这种情况下,我无法评估故障点)。
在这种情况下,是否存在从下游消费者(在不同的 dll 上)重新订阅的模式?
感谢任何帮助。 谢谢!
【问题讨论】:
-
其中一个订阅者必须抛出该异常。
-
是的......就是这样......谢谢保罗!