Whether you're using the older listener ports or the newer activation specifications, tuning the relevant thread pools is a key aspect of MDB performance. Thread pools are configured at a server level, while the number and concurrency of the MDBs is configured independently. Therefore, if your maximum thread pool size is too small, messages may queue unnecessarily. Below are equations for the most common setups which define how to setup the relevant thread pool maximums to avoid queuing. The x=1..n items are all the items of that type processing MDBs for that server (which may be configured at a higher scope). The thread pool maximum size is not the only variable -- the JVM heap, OS resources, etc. also have to be able to support the configured concurrency.
Default Messaging Provider (SIBus):
WebSphere MQ Messaging Provider:
Links for older configurations: http://www-01.ibm.com/support/docview.wss?uid=swg21383363 and http://www-01.ibm.com/support/docview.wss?uid=swg21317935