A queue send/receive model enables better parallelism; so you are in the right track. to scale the processing; simply increase the instances of the queue receiver. have 10-12 threads/ JVM and have 1-3 JVM.
In your case is you need to process 20,000 messages / hour i.e.
Per second processing 20,000/3600 = 6
suppose your processing per transaction takes 1 second; all you need is 6 threads and one JMV. But in reality based on complexity of your message you should be taking less than one sec.