Implementing a JMS consumer
a standalone client that consumes messages from the queue every time a message exists


If you want to process the messages in real time, implementing a message listener is the most practical way -- this way you let ActiveMQ and JMS handle the continuous checking that you're currently doing. As you said, you could do this in a WAR, but a JAR, or thread could accomplish the same task.

If you weren't implementing runnable and coding inside your current while (isRunning) { loop, your current setup would be more appropriate for retrieving one message at a specific time.  Since you are, you're basically telling the JVM to create a connection, create a session, retrieve one message, kill everything, and start over.  This just adds a ton of overhead best left to the API.