Skip to content

John Bennett's blog

Our service bus – Introduction

Tuesday, February 1, 2011

Back in October 2008, I was lucky enough to have pay for me to attend Udi Dahan‘s Advanced SOA course. I had been reading a lot about SOA, playing with NServiceBus, and as we geared up for revamping our CMS we knew we wanted some SOA good-ness. Still, Udi’s course blew my mind. In a good way.

One result of the course was that I wanted to really understand NServiceBus and all the concepts in embodies. It all looks simple from the outside.  But as with most things, it’s quite a bit more complex on the inside. I’ve found that the best way to really understand the problem is to try to solve it yourself.

As an exercise in understanding, I set out to create a simple service bus implementation. I had used WCF and its NetMsmqBinding before, so I started there. (Udi has strong words about WCF and how it can’t do what NServiceBus can. I wasn’t trying to disprove those words. Just trying to understand them.)

A number of forces consipired together, resuting in the use of our homegrown service bus in our production environment, rather than the far more mature and robust NServiceBus. For the past 18 months, our bus has been the messaging infrastructure used by all of our new applications. We may yet “upgrade” to NServiceBus, and I would be excited to do so. Time will tell.

This series of posts describes our service bus.

Part 2: How a message gets from here to there

Part 3: Transactional and non-transactional messaging

Part 4: Message types

Part 5: Handling poison messages and dead letters