Producing Messages
This guide shows how to produce messages to Korvet using Kafka clients.
Using kafka-console-producer
The simplest way to produce messages:
kafka-console-producer --bootstrap-server localhost:9092 --topic my-topic
Type messages and press Enter to send each one.
Java Producer
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record =
new ProducerRecord<>("my-topic", "key", "value");
producer.send(record, (metadata, exception) -> {
if (exception == null) {
System.out.println("Sent to partition " + metadata.partition() +
" at offset " + metadata.offset());
} else {
exception.printStackTrace();
}
});
producer.close();
Python Producer
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('my-topic', b'Hello, Korvet!')
producer.flush()
Message Format
Messages consist of:
-
Key (optional): Used for partitioning
-
Value: The message payload
-
Headers (optional): Key-value metadata
-
Timestamp: Automatically set if not provided
Partitioning
Messages are distributed across partitions based on:
-
Key hash: If a key is provided, messages with the same key go to the same partition
-
Round-robin: If no key is provided, messages are distributed evenly