When you have mulitple fast publishers and slow subscribers activemq sometimes freezes up. This becomes all the more common if a subscriber did not close the connection gracefully. The reason is activemq's internal memory cache that stores the messages untile a subscriber has successfuly received the messaged. The memory cache is set to 20MB by default. If the memory cache runs out of space, the broker freezes up as all the threads wait on the cache to release some space, which does not happen in case of faulty subscriber.
You can increase the cache size by setting activemq' usagemessage size in bytes as follows.
<amq:broker id="hub" useShutdownHook="false" useJmx="false" persistent="false" brokerName="hub" >
....
<!-- set limit to 200mb -->
<amq:memoryManager >
<amq:usageManager limit="209657600"/>
</amq:memoryManager>
</amq:broker>