I’ve been working for the past number of months on a comprehensive Pluralsight training course on Microsoft StreamInsight. I was hoping that I could bang out the course in a short amount of time, but I quickly learned that I needed to get much deeper into the product before I was comfortable producing credible training material.
The first seven modules of the course are now online at Pluralsight under the title StreamInsight Fundamentals. The final (yet to be finished) module will be on building resilient applications and leveraging the new checkpointing feature. This is a complex topic, and I am building a full end to end demo from scratch, and didn’t want that holding up the primary modules of the course.
So what did I build? Seven modules totaling about 4 1/2 hours of content. Each module is very demo-heavy with a focus on realistic scenarios and none of the “let’s assume you have an object of type A with a property called Foo” stuff.
- Module 1 – Introducing StreamInsight. This module is a brief introduction into event driven architecture, complex event processing and the basics of the StreamInsight product.
- Module 2 – Developing StreamInsight Queries. Lots of content here cover filtering, projection, event windows, grouping, aggregation, TopK, join, union and a host of timestamp modification examples. This is the longest module because it’s arguably the most important topic (but still watch the other ones!).
- Module 3 – Extending StreamInsight LINQ Queries. When out-of-the-box operators won’t do, build your own! This module looks at all the supported ways to add extensions to StreamInsight LINQ.
- Module 4 – StreamInsight Event Sources: IObservable and IEnumerable. Here I walk through how to use both IObservable and IEnumerable objects as either the source or sink in a StreamInsight application. The IObservable stuff was fun to build, but also took the longest for me to fully understand.
- Module 5 – StreamInsight Event Sources: Developing Adapters. This module covers the strategies and techniques for building both input and output adapters. Together we’ll build a typed MSMQ input adapter and an untyped MSMQ output adapter. Good times will be had by all.
- Module 6 – Hosting StreamInsight Applications. In this module, I show how to host StreamInsight within an application or by leveraging the standalone service. I also go through a series of examples on how you chain queries (and streams) together and leverage their reusable nature.
- Module 7 – Monitoring and Troubleshooting StreamInsight Applications. Here I show all the ways to collect diagnostic data on StreamInsight applications and then go through event flow analysis using the Event Flow Debugger.
All in all, it was fun thinking up the structure, preparing the material, building the demos, and producing the training videos. There hasn’t been a whole lot of StreamInsight material out there, so hopefully this helps developers and architects who are trying to get up to speed on this very cool and powerful technology.