Good ole Brian has written about having cross platform messaging via XML packets, or lower level.
Messaging often seems to be under used. It is often a great way to handle interop (hence Brian’s idea), and a fantastic way to handle scaling out your architecture.
The pull model means that you can ramp up worker processes when it makes sense.
For example, if you ran an amazon.com the use case that HAS to work is purchasing books. Book reviews however, aren’t as important. So, to get around having DB bottlenecks, you could have the book review process put messages on a message queue. When traffic is low, you can startup some workers to take care of the reviews. If you don’t have the horsepower you can turn them off.
In traditional RPC the clients are pushing info at you, and you HAVE to handle it.
With Brians nice abstraction, I could even have my Rails apps play nice, and have them throw messages onto the queue that some backend system can fulfil on.
So now Rails can power my COBOL legacy backend :)
August 5th, 2005 at 10:22 am
Been chatting with Strachan about this and we are coming to a conclusion that a BEEP based (not beep, more netcat friendly) protocol may be better wire protocol for this. Having trouble getting aroudn requiring size though =/
August 5th, 2005 at 1:21 pm
Wasn’t the power of Rails supposed to be the quick way you can create CRUD screens? Now you’re not going to hit the database at all and you’re going to build some messaging infrastructure underneath… umm… Is this based on real needs or just what sounds fun?
August 5th, 2005 at 6:58 pm
Jason -
I am not trying to say that all apps should be Rails + J2EE ;)
However, there are a small amount of apps where the service layer is already implemented in J2EE/.NET/PHP/whatever, and one way to integrate is with web services to that layer, and another could be messaging.
You could even create ActiveRecord for messaging.. wait that would also be called ActiveMQ? ;)
Dion
August 7th, 2005 at 3:19 am
Jason: “Wasn’t the power of Rails supposed to be the quick way you can create CRUD screens?”
No, it’s a fully featured web framework.