From the short description you give, your scenario looks like a good fit for an OMG DDS (Data Distribution Service) implementation. This is a language neutral specification, and there are several products available that offer a C# API.
See this Wikipedia entry for a very brief introduction and a list of references.
DDS supports many advanced data management features like a strong-typed and content aware databus, distributed state management and historical data access. Its rich set of Quality of Service settings allows to off-load a lot of the complexity from your applications to the middleware.
In particular, the content filtering requirement that you describe is an important feature. Some of the available products have implemented sophisticated filtering mechanisms that scale well and have smart trade-offs between the amount of traffic on the network versus the CPU load required to evaluate the filters. Those filters are expressed in SQL syntax, like the WHERE
clause of a SELECT
.
DDS implementations typically are highly scalable and decentralized in nature. Components participating in a DDS infrastructure are decoupled, both in space and in time. Some DDS products are deployed in numerous mission- and business-critical systems.
If you are interested, then I can give you much more information. I have specialized in DDS for more than 10 years, I still like it and I think it is one of the most useful technologies around.