completed section 2

- learnt how to make sure RabbitMQ doesn't forget queues and messages
  when it quits or crashes
- learnt how to do a fair dispatch