结合实时和历史序列

时间:2017-01-24 19:25:02

标签: c# system.reactive reactive-programming

我使用两种不同的API方法查询财务数据:

  • 第一种方法一次返回历史数据。
  • 第二种方法提供实时数据流。

朴素的方法是处理历史数据,将其作为IObservable流式传输,完成它,然后切换到永远不会完成的真实数据流:

var historicalStream = GetHistoricalData(Datetime.Now.AddHours(-1), Datetime.Now);
return historicalStream.Concat(realTimeStream);

问题在于,在处理历史流时可能会遗漏一些实时数据滴答。什么是保证不会丢失单个节拍的最佳方式(重叠数据不是问题)?

1 个答案:

答案 0 :(得分:0)

您可以Replay实时流中的所有错过的事件。

var liveStream = realTimeStream.Replay();
liveStream.Connect();

var historicalStream = GetHistoricalData(Datetime.Now.AddHours(-1), Datetime.Now);
return historicalStream.Concat(liveStream);