ActiveMQ (was Re: Devel::Cover with Moose?)

Simon Wistow simon at
Thu May 26 17:25:01 BST 2011

On Tue, May 24, 2011 at 03:18:27PM +1000, Toby Wintermute said:
> By the way.. how are you finding ActiveMQ, especially when interacting
> with it from Perl?

My experience is a few years old and it's very possible things have 
changed now but, given a choice between working with ActiveMQ again and 
sawing off my own limbs with a spork I would choose self-mutilation with 
the hybrid cutlery every time.

Every time.

In my experience people's timeline with ActiveMQ goes like this (mine 
included, obv.) 

"Oooh, this looks nice. Not too hard to install. Oh, and look how easy 
it was to get stuff working. This is magic! Awesome. [time passes] Hmm, 
that's a bit odd, I guess I'll just work around it [more time passes] 
Wait? What? That's retarded! Why is it doing that? [even more time 
passes] Holy Shit! Where's my data? Screw this."

Unless things have changed dramatically ActiveMQ has many, many features 
pretty much all poorly documented in the typical ASF/Java project 
fashion (i.e a poorly maintained wiki referencing multiple versions of 
the software implicitly, a collection of hard to navigate JIRA pages and 
masses of badly written Javadoc with no clear entry point). The basics 
(queues, topics, failover) don't work reliably because it appears like 
the dev team are hellbent on replicating every last feature of MQSeries 
and TibCo Rendevous. But doing it badly.


Annnnnnnnd breathe.

You'll have even more trouble with Stomp. It looks like I never released 
my Net::Stomp::Async module which got round the problem of only ever 
being able to consume 100 messages/s (because of select()) but you might 
still run into problems with the fact that Stomp assumes everything is 
text which can make doing property based routing difficult.

Also, (again unless things have changed) ActiveMQ requires that backoff 
is done by the client. I'm not sure if that's an issue.

I've had some issues with RabbitMQ reliability in the past and adminning 
Erlang can be interesting.

More recently I've used ZeroMQ for some stuff, a little Redis PubSub 
(with custom patches for queues as well as topics), TheSchwartz with 
specialist workers and written a really simple system in node.js

More information about the mailing list