AsyncKafkaConsumer and ClassicKafkaConsumer aren't part of Kafka's core API. The Classic Consumer uses a blocking poll() to fetch messages synchronously, giving you full control over processing and offset commits. The Async Consumer fetches and processes messages non-blockingly, often using callbacks or reactive streams. While the Classic Consumer is part of the standard Kafka API, Async patterns are typically implemented by frameworks or libraries on top of Kafka