【问题标题】:Rx .net subject OnNext exception is losing downstream observersRx .net 主题 OnNext 异常正在失去下游观察者
【发布时间】: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 上)重新订阅的模式?

感谢任何帮助。 谢谢!

【问题讨论】:

  • 其中一个订阅者必须抛出该异常。
  • 是的......就是这样......谢谢保罗!

标签: system.reactive rx.net


【解决方案1】:

我发现下游订阅者抛出异常,导致订阅被丢弃。现在这不是问题。

谢谢 - How to handle exceptions in OnNext when using ObserveOn?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多