We use Catalyst::Engine::Stomp for all our ActiveMQ consumers. It works rather well, and (especially with the addition of our Net::ActiveMQ) makes working with queues mostly painless.
But there is always room for improvement. There were two main missing pieces:
- generalisation of the subscriptions and inputs, from “a queue per
controller” to “one subscription per controller”
- dispatching to an action based on the JMSType header, instead
of the ad-hoc @type body attribute we have been employing
This is the story of how I implemented both.