Fehler bei der Erzeugung des KafkaConsumer werden nicht mehr verschluckt
authorKai Moritz <kai@juplo.de>
Fri, 1 Apr 2022 09:40:14 +0000 (11:40 +0200)
committerKai Moritz <kai@juplo.de>
Fri, 1 Apr 2022 11:54:41 +0000 (13:54 +0200)
* Beim Erzeugen der Properties-Instanz können Exceptions fliegen
* Beim Erzeugen der KafkaConsumer-Instanz können Exception fliegen
* Daher wurden diese Schritte in den try/catch-Block verlegt
* Neben der Nachricht wird jetzt auch der ganze Stack-Trace gelogged
* Da die Erzeugung des KafkaConsumer jetzt im try/catch-Block geschieht,
  wird der EndlessConsumer im Fehlerfall korrekt als beendet markiert

src/main/java/de/juplo/kafka/EndlessConsumer.java

index 22dce95..da2f8f0 100644 (file)
@@ -48,18 +48,18 @@ public class EndlessConsumer implements Runnable
   @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", "earliest");
+      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 +91,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