views:

289

answers:

1

I'm working on a (primarily) Perl project and want to use a message queue to isolate processes from each other. I have a work flow like this:

Input -> Receiver -> Processor(s) -> Output(s)

I need to handle several hundred transactions/second, so speed my biggest motivator. What is the fastest message queue system for this type of setup?

All of my processes run on the same machine, so I can use UNIX sockets or temp-files if it means better performance.

So far my two favorites are IPC::Dirqueue and beanstalkd. Anyone have experience with both and can make conclusions about which is faster?

What else is out there that would make a super-fast work queue on a single machine?

+3  A: 

I don't know about IPC::Dirqueue or beanstalkd, but I've had good success with spread (with either the Spread or Spread::Message modules). It's easy to do multi-process (with another daemon running) and also multi-machine. The nice thing is that since it's group based you can easily attach another listener if you want to do things like logging, statistics or debugging without having to alter (or slow down) your processors.

mpeters
I cannot help but cheer for this. Happy user for a few years at my former job, even got some paid custom support from the authors -- world class all around.
Leonardo Herrera
Thanks for this. I have had similar tasks as the OP before and I never came across spread. I'll give it a whirl when I get the opportunity!
tsee