X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2FSimpleProducer.java;h=9fcaa6e1592fd009dbd5bad4f2597f47da1a19c7;hb=badfc4b6fa99dc6f7fa9ffde004a82b8539bc4ec;hp=357e07a93e4de5b5b1c80e29076a7d4ba7c128f4;hpb=1b7afcf70fea7922f795ededaaec9277dacd9ffd;p=demos%2Fkafka%2Ftraining diff --git a/src/main/java/de/juplo/kafka/SimpleProducer.java b/src/main/java/de/juplo/kafka/SimpleProducer.java index 357e07a..9fcaa6e 100644 --- a/src/main/java/de/juplo/kafka/SimpleProducer.java +++ b/src/main/java/de/juplo/kafka/SimpleProducer.java @@ -6,8 +6,6 @@ import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; @Slf4j @@ -18,21 +16,21 @@ public class SimpleProducer private final KafkaProducer producer; private long produced = 0; + private volatile boolean running = true; + private volatile boolean done = false; - public SimpleProducer(String clientId, String topic) + public SimpleProducer(String broker, String topic, String clientId) { - // tag::create[] Properties props = new Properties(); - props.put("bootstrap.servers", "localhost:9092"); + props.put("bootstrap.servers", broker); + props.put("client.id", clientId); // Nur zur Wiedererkennung props.put("key.serializer", StringSerializer.class.getName()); props.put("value.serializer", StringSerializer.class.getName()); - KafkaProducer producer = new KafkaProducer<>(props); - // end::create[] + producer = new KafkaProducer<>(props); - this.id = clientId; this.topic = topic; - this.producer = producer; + this.id = clientId; } public void run() @@ -41,18 +39,19 @@ public class SimpleProducer try { - for (; i < 100 ; i++) + for (; running ; i++) { send(Long.toString(i%10), Long.toString(i)); + Thread.sleep(500); } - - log.info("{} - Done", id); } + catch (InterruptedException e) {} finally { log.info("{}: Closing the KafkaProducer", id); producer.close(); log.info("{}: Produced {} messages in total, exiting!", id, produced); + done = true; } } @@ -61,7 +60,7 @@ public class SimpleProducer final long time = System.currentTimeMillis(); final ProducerRecord record = new ProducerRecord<>( - "test", // Topic + topic, // Topic key, // Key value // Value ); @@ -111,7 +110,42 @@ public class SimpleProducer public static void main(String[] args) throws Exception { - SimpleProducer producer = new SimpleProducer("P", "test"); - producer.run(); + String broker = ":9092"; + String topic = "test"; + String clientId = "DEV"; + + switch (args.length) + { + case 3: + clientId = args[2]; + case 2: + topic = args[1]; + case 1: + broker = args[0]; + } + + SimpleProducer instance = new SimpleProducer(broker, topic, clientId); + + Runtime.getRuntime().addShutdownHook(new Thread(() -> + { + instance.running = false; + while (!instance.done) + { + log.info("Waiting for main-thread..."); + try + { + Thread.sleep(1000); + } + catch (InterruptedException e) {} + } + log.info("Shutdown completed."); + })); + + log.info( + "Running SimpleProducer: broker={}, topic={}, client-id={}", + broker, + topic, + clientId); + instance.run(); } }