1. Produce and consume messages

  2. Control the flow of messages

  3. Produce messages with a key/value

  4. Poll or consume new messages

  5. Assign consumer group to partition / topic

  6. Build reliable producer / consumer