In less than an hour I was able to add Rx support to MassTransit, an open source ESB:
https://github.com/MassTransit/MassTransit/tree/master/src/MassTransit.Reactive
Update: As for why it's a good fit, they already had a Subscribe/Unsubscribe mechanism in place. Adding Rx support means that those subscriptions can now be composed together easily. For example, you might have two kinds of messages that share some CorrelationId
. With Rx you can trivially Join()
the published messages by that identifier:
var someMessages = bus.AsObservable<SomeMessage>();
var otherMessages = bus.AsObservable<AnotherMessage>();
var joined = from s in someMessages
join o in otherMessages
on s.CorrelationId equals o.CorrelationId
select new { s.Something, o.OtherThing };
joined.Subscribe(x => Console.WriteLine(x));
Also: Check out https://github.com/reactiveui/ReactiveUI for an Rx-powered MVVM framework targeting XAML (WPF, Silverlight, WP), iOS and Android. Very, very cool stuff.