As a counter point, I have used ActiveMQ for a pub/sub architecture and it worked great (millions of messages a day, which was benchmarked as only about 10% of potential on a single broker). We did treat it as an API rather than a deployable component though. We wrapped the broker in our own service architecture (you can instantiate a broker like any POJO) and disabled persistency. Queues were used only very lightly. So maybe we dodged a bullet there... :-).