SimpleProducer.java
A simple working example of a producer program.
The example includes Java properties for setting up the client identified in the comments;
the functional parts of the code are in bold
. This code is compatible
with versions as old as the 0.9.0-kafka-2.0.0 version of Kafka.
package com.cloudera.kafkaexamples;
import java.util.Date;
import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
public class SimpleProducer {
public static void main(String[] args) {
// Generate total consecutive events starting with ufoId
long total = Long.parseLong("10");
long ufoId = Math.round(Math.random() * Integer.MAX_VALUE);
// Set up client Java properties
Properties props = new Properties();
props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
"host1:9092,host2:9092,host3:9092");
props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
StringSerializer.class.getName());
props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
StringSerializer.class.getName());
props.setProperty(ProducerConfig.ACKS_CONFIG, "1");
try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
for (long i = 0; i < total; i++) {
String key = Long.toString(ufoId++);
long runtime = new Date().getTime();
double latitude = (Math.random() * (2 * 85.05112878)) - 85.05112878;
double longitude = (Math.random() * 360.0) - 180.0;
String msg = runtime + "," + latitude + "," + longitude;
try {
ProducerRecord<String, String> data = new
ProducerRecord<String, String>("ufo_sightings", key, msg);
producer.send(data);
long wait = Math.round(Math.random() * 25);
Thread.sleep(wait);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}