message queue loop