Change to use a message object as the argument to handler.
Call #on_idle on handler if queue is idle and method is implemented.