That is the expected behavior. The message in a queue is being consumed by an application (meaning your OnMessage
method). WebSphere MQ will deliver the message to a waiting consumer application as soon as the message arrives in queue.
If you want to messages to remain in the queue, then you need to stop all your consumer application.