First you need to know if you can process the messages in parallel and how long the onMessage() MEthod will run. This will determine how many threads you can run in parallel (concurrency and reordering) on which queue.
The MDB Pool itself is not that interesting (if enough instances are available) as the parallelity is controled by the dequeueing threads.
I am looking for parallism for message processing, but to achive it I have to make concern on all factors like hoewmnay queues for this 300 cutomers and how many MDBs etc....... This architecutre rigth now looking very complex to me as I am feeling that I have to look on lot of factors...........................