…experienced in a project. When I first started tweet hopper , I decided to use Starling for queue handling. Why not, twitter used it... Everything ran great as long as I had one box with the job running daemons and the job queue. Everything fell apart slowly as I moved to two boxes, even load balancing between two starling servers didn't help.
That is when I decided that RabbitMQ might be my best bet, I had heard great things about Erlang's capabilities in the scaling …
- Starling is a Message Queue Server based on MemCached
- written in Ruby
- stores jobs in memory (message queue)
- Ruby client: for instance Workling
- documentation: some good tutorials, for example the railscast about starling and workling or this blog post about starling
Kestrel
- written by Robey Pointer
- Starling clone written in Scala (a port of Starling from Ruby to Scala)
- Queues are stored in memory, but logged on disk
RabbitMQ…
…job), but we need a proper, queue based runner in production. Up until recently we were using the Starling runner, which worked pretty well for a small set of machines.
However, after migrating our infrastructure to Amazon EC2 and rapidly scaling up the number of app servers, we figured it would be great to take advantage of Amazon SQS (Simple Queue Service), rather than maintaining our own queue servers. Fortunately, Workling's plugin architecture makes it very easy to …
…there already, and a cheap client since they're already implemented and easy to use. Looking at Starling as an example of this. 24% queue, 76% other shit LOC -wise with REST . Going through implementing a queue in Sinatra, which is really quite easy. Building apps on REST is good since there's plenty of servers and clients out there that can easy consume and use the services without a lot of code.