| Interface | Description | 
|---|---|
| Callback | A callback interface that the user can implement to allow code to execute when the request is complete. | 
| Partitioner | Partitioner Interface | 
| Producer<K,V> | The interface for the  KafkaProducer | 
| ProducerInterceptor<K,V> | A plugin interface that allows you to intercept (and possibly mutate) the records received by the producer before
 they are published to the Kafka cluster. | 
| Class | Description | 
|---|---|
| KafkaProducer<K,V> | A Kafka client that publishes records to the Kafka cluster. | 
| MockProducer<K,V> | A mock of the producer interface you can use for testing code that uses Kafka. | 
| ProducerConfig | Configuration for the Kafka Producer. | 
| ProducerRecord<K,V> | A key/value pair to be sent to Kafka. | 
| RecordMetadata | The metadata for a record that has been acknowledged by the server | 
| RoundRobinPartitioner | The "Round-Robin" partitioner
 
 This partitioning strategy can be used when user wants 
 to distribute the writes to all partitions equally. | 
| UniformStickyPartitioner | The partitioning strategy:
 
 If a partition is specified in the record, use it
 Otherwise choose the sticky partition that changes when the batch is full. | 
| Exception | Description | 
|---|---|
| BufferExhaustedException | This exception is thrown if the producer is in non-blocking mode and the rate of data production exceeds the rate at
 which data can be sent for long enough for the allocated buffer to be exhausted. |