Microsoft Embraces AMQP Messaging Standard
I just ran across this article by Jeff Gould explaining that Microsoft has joined the Advanced Message Queuing Protocol (AMQP) working group. This is really exciting because AMQP is an open standard with a sizable number of cross-platform implementations. Jeff makes the analogy that:
“…AMQP is to high-value, reliable business messaging what SMTP is to e-mail.”
This certainly has the potential to really change the landscape for the better (and away from the proprietary messaging systems like IBM’s MQ or Tibco’s Rendezvous). The current 0.9 specification makes mention of different scales of deployment:
- “Developer/casual use: 1 server, 1 user, 10 message queues, 1 message per second
- Production application: 2 servers, 10-100 users, 10-50 message queues, 10 messages per second (36K messages/hour)
- Departmental mission critical application: 4 servers, 100-500 users, 50-100 message queues, 100 messages per second (360K/hour)
- Regional mission critical application: 16 servers, 500-2,000 users, 100-500 message queues and topics, 1000 messages per second (3.6M/hour)
- Global mission critical application: 64 servers, 2K-10K users, 500-1000 message queues and topics, 10,000 messages per second (36M/hour)
- Market data (trading): 200 servers, 5K users, 10K topics, 100K messages per second (360M/hour)”
Wow. That’s a lot of messages, with a lot of critical applications riding on top. They are also targeting a number of different system architectures:
- “Store-and-forward with many writers and one reader
- Transaction distribution with many writers and many readers
- Publish/subscribe with many writers and many readers
- Content-based routing with many writers and many readers
- Queued file transfer with many writers and many readers
- Point-to-point connection between two peers
- Market data distribution with many sources and many readers.”
There is a C#/.NET implementation called RabbitMQ that looks extremely interesting. There is even a version compiled explicitly for .NET 3.0 with WCF bindings. There is even a good bit of documentation. Sweet. I really need to try this out and see how easy it is to set up a publish/subscribe system with reliable messaging.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
November 6th, 2008 at 3:11 pm
Huge. I am working on a project that uses MSMQ and a custom implementation by the customer. It’s actually pretty cool, but there are a lot of issues with permissions on queues. We are using the publish subscribe method and it seems to be fairly solid, but the permission sets and the difficulty in the underlying implementation (it took a long time to get it sufficiently architected) makes me excited for a built in version for .NET.
November 6th, 2008 at 3:18 pm
It IS huge! I spent part of my summer making a pub/sub system with WCF and it was a ton of work, but it didn’t even address things like reliability or throttling (basically the equivalent of UDP compared to TCP). Really looking forward to trying RabbitMQ out.
November 7th, 2008 at 2:33 am
AMQP is very promising from a standardization point-of-view and RabbitMQ is an excellent implementation, but the RabbitMQ server is written on top of Erlang/OTP - not .NET. The RabbitMQ .NET package is simply a client library.
This shouldn’t discourage anyone. Erlang/OTP has a proven track record as a foundation for scalable, fault tolerant systems. It has been used for 20 years in the telecom industry and has recently grown in popularity to be used inseveral high profile projects including ejabberd and CouchDB.
November 7th, 2008 at 10:13 am
dsmith — You’re right, I should have mentioned the Erlang server. For what it’s worth, I downloaded the RabbitMQ server “bundle” and had it up and running on the command line in less than 5 minutes. In the future it might be nice to see a wrapper around the server application so that it can be started/stopped from the management console.
November 25th, 2008 at 11:46 am
People can now run RabbitMQ as a Windows service, meeting Matt’s requirement above. Any questions please email info at rabbitmq dot com. Cheers, alexis