Last week I tried ActiveMQ. I knew it integrated well with Spring and decided to give it a try to solve a problem with asynchronous processing for email delivery.
First I tested ActiveMQ 4, which is not a stable release, and then 3. To be completely honest, first I tested ActiveMQ 4 with Jencks for message-driven beans (pojos, not EJBs). It didn't work pretty well and Jencks seemed to me not mature enough yet. For this reason, I decided to have a singleton message listener with ActiveMQ. However, it did not prove to work so well either: redelivery simply didn't happen with an asynchronous message listener in version 4. Since this version is not stable, I tested version 3, but surprisingly redelivery did not work as I expected either. It redelivers, but does not take into account the redelivery initial timeout and back off mode. I contributed with the project with two junit tests to test these issues. Nothing like some problem like that to show us how useful can be a JUnit test. And also how useful it is for our own tests where everything seems to work without extensive testing.
Besides that, it seems dead queue letter does not work in ActiveMQ 3 for queues, only for topics. I had to code a home-made solution for my problem, since ActiveMQ did not seem to work pretty well. Maybe JBoss has a better implementation with JBossMQ. But I was really curious about this comparison between jbossmq and activemq.