【转载】StreamInsight手札系列
StreamInsight手札系列发表于“SQL中国研发中心”博客,共分为5篇:
评论:此篇博文文末的链接非常有用!
《StreamInsight手札(二)——构建HelloInsight程序》
评论:期待读者动手实践一下文中的样例。这个HelloWorld的样例可以算作“麻雀虽小,但五脏俱全”,当然这其中也有些许瑕疵,例如Main函数中有着一些dead code,Query Bind的部分介绍过少等等。如果读者在.NET Framework 4.0下编写完样例后,运行时出现“XXXConfig无法序列化”的错误,请分别给HelloInputConfig和HelloOutputConfig添加序列化Attribute。
《StreamInsight手札(三)——使用IObservable接口创建StreamInsight程序》
评论:文中使用了强大的Microsoft Reactive Extension中的IObservable和IObserver接口实现观察者模式用来将StreamInsight查询结果进行推送。(注:IObservable<in T>和IObserver<in T>接口已经正式加入到.NET Framework 4.0中)
其实还可以利用Reactive中的API将工作做的更加简单,如:
static void Main(string[] args) { using (Server server = Server.Create("Default")) { Application app = server.CreateApplication("HelloReactive"); var obserable = Observable.Interval(TimeSpan.FromSeconds(1)).Select(_ => { int randomValue = new Random().Next(100); Console.WriteLine("Generate: " + randomValue); return randomValue; }); var stream = obserable.ToPointStream<int, HelloPayload>(app, e => PointEvent<HelloPayload>.CreateInsert(DateTimeOffset.Now, new HelloPayload() { Value = e }), AdvanceTimeSettings.StrictlyIncreasingStartTime, "Observable stream"); var query = from e in stream where e.Value > 50 select e; query.ToObservable<HelloPayload>() .Subscribe(e => Console.WriteLine("*Output*: " + e.Value)); System.Threading.Thread.Sleep(-1); } }
《StreamInsight手札(四)——使用IEnumerable接口创建StreamInsight程序》
评论:输入适配器中使用strings进行“缓冲”有点令人费解,好奇如果是海量数据事件流的话该怎么去做?
《StreamInsight手札(五)——使用EventFlowDebugger调试事件流》
评论:此篇博文介绍的一些关于连接EventFlowDebugger出现错误的解决方案较为实用,需要进一步阅读来学习如何使用EventFlowDebugger来进行调试。