As others have mentioned/implied in the comments:
The actual sequence that is supposed to happen is:
Setup your callbacks correctly first (including the on_message).
Wait until you get back an ack for the connect.
Then, send out a subscribe request. (This will actually send a message on TCP to the broker. That cannot happen if the connect is ...