`auto.offset.reset` konfigurierbar gemacht
[demos/kafka/training] / src / main / java / de / juplo / kafka / EndlessConsumer.java
index 22dce95..b3dd446 100644 (file)
@@ -25,6 +25,7 @@ public class EndlessConsumer implements Runnable
   private final String groupId;
   private final String id;
   private final String topic;
+  private final String autoOffsetReset;
 
   private AtomicBoolean running = new AtomicBoolean();
   private long consumed = 0;
@@ -36,30 +37,32 @@ public class EndlessConsumer implements Runnable
       String bootstrapServer,
       String groupId,
       String clientId,
-      String topic)
+      String topic,
+      String autoOffsetReset)
   {
     this.executor = executor;
     this.bootstrapServer = bootstrapServer;
     this.groupId = groupId;
     this.id = clientId;
     this.topic = topic;
+    this.autoOffsetReset = autoOffsetReset;
   }
 
   @Override
   public void run()
   {
-    Properties props = new Properties();
-    props.put("bootstrap.servers", bootstrapServer);
-    props.put("group.id", groupId);
-    props.put("client.id", id);
-    props.put("auto.offset.reset", "earliest");
-    props.put("key.deserializer", StringDeserializer.class.getName());
-    props.put("value.deserializer", StringDeserializer.class.getName());
-
-    this.consumer = new KafkaConsumer<>(props);
-
     try
     {
+      Properties props = new Properties();
+      props.put("bootstrap.servers", bootstrapServer);
+      props.put("group.id", groupId);
+      props.put("client.id", id);
+      props.put("auto.offset.reset", autoOffsetReset);
+      props.put("key.deserializer", StringDeserializer.class.getName());
+      props.put("value.deserializer", StringDeserializer.class.getName());
+
+      this.consumer = new KafkaConsumer<>(props);
+
       log.info("{} - Subscribing to topic {}", id, topic);
       consumer.subscribe(Arrays.asList(topic));
 
@@ -91,7 +94,7 @@ public class EndlessConsumer implements Runnable
     }
     catch(Exception e)
     {
-      log.error("{} - Unexpected error: {}", id, e.toString());
+      log.error("{} - Unexpected error: {}", id, e.toString(), e);
       running.set(false); // Mark the instance as not running
     }
     finally