def dispatch_message(delay, sender_id, receiver_id, msg, extra):
    receiver = EntityManager.get_entity_from_id(receiver_id)
    message = Message(sender_id, receiver_id, msg, extra)

    if delay <= 0.0:
        discharge(receiver, message)
    else:
        message.setTime(time.time() + delay)
        priorityQ.add(message)