【发布时间】:2018-04-19 12:29:23
【问题描述】:
将 Rx 和数据流与不断工作的 Windows 服务一起使用是个好主意吗? 我只是想知道使用 rx 间隔每 5 分钟从 db 获取数据并将其放入阻塞收集,然后使用 Tpl 数据流来处理数据。是正确的方式吗?
更新
我有一个新问题。我必须从数据库中获取项目,对其进行验证并在数据库上执行提交。即使验证返回 false 我也必须执行提交。现在,我想每隔 5 分钟从 db 获取数据,但我不想在 dataFlow 中有双行。所以也许我必须使用blockingCollection 来保留行ID?
【问题讨论】:
-
这可能是许多方法之一,是的,它应该可以工作。是什么阻止了你做一个小的概念证明?
-
严重缺乏信息,我们怎么可能知道
-
无论如何,偏离主题,基于意见
-
其实没有。当您有 dataflow 块时,为什么要将 anything 放入阻塞集合中?只需将数据发布到块中即可。无论如何,Rx 都用于事件处理,而不是计时器。从数据库读取应该是管道的第一个 TransformManyBlock 的工作,而不是 Rx.Second 块应该从第一个块接收数据并做任何你想做的事情
-
也就是说,您可以链接可观察对象和数据流块。您可以在一个块上调用
.AsObserver()以获取可以订阅可观察对象的观察者,例如var obs=myBlock.AsObserver(); Observable.Interval(..).Subscribe(obs);
标签: c# windows-services system.reactive tpl-dataflow