Consumer instances are Kafka clients that fetch records of (one or multiple partitions of) a topic.
Consumers also handle the flow control (pausing/resuming busy partitions) as well as changes in the partition assignment.
The topic a consumer subscribes to must have been created before. When starting a consumer, it will check Kafka if the topic
exists.
Threading model:
The Consumer has a single thread polling Kafka and handing over raw records to PartitionProcessors for further processing.
There is one PartitionProcessor per partition.
A PartitionProcessor currently is single-threaded to keep the ordering guarantee on a partition.
Consumer instances are created by the ConsumerFactory.