When you are running your java client in server binding to read the messages from MQ you make sure that your java client is running on your MQ Serever. When you are running the java client in server binding you will get the very good performance with compare to client binding. I am able to read 500 messages in 2.2 seconds each message size is around 30KB. import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import com.ibm.mq.MQException; import com.ibm.mq.MQGetMessageOptions; import com.ibm.mq.MQManagedObject; import com.ibm.mq.MQMessage; import com.ibm.mq.MQPutMessageOptions; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; import com.ibm.mq.constants.CMQC; public class QueueReader{ private MQQueueManager _queueManager = null; public String qManager = null; ...