Fix: `close()` muss noch vom `ExampleConsumer` aufgerufen werden
authorKai Moritz <kai@juplo.de>
Sat, 2 Nov 2024 21:23:16 +0000 (22:23 +0100)
committerKai Moritz <kai@juplo.de>
Sun, 17 Nov 2024 12:39:05 +0000 (13:39 +0100)
* Der Aufruf von `close()` löst die Abmeldung der Instanz bei dem
  GroupCoordinator aus.
* Dieser Vorgang sollte noch unter der Kontrolle des Anwendungscodes
  erfolgen!
* Wenn die Methode erst von Spring aufgerufen wird, werden dann ggf. noch
  Seiteneffekte ausgelöst, die dann noch im Kontext der Instanz laufen,
  obwohl diese eigentlich schon beendet wurde!

src/main/java/de/juplo/kafka/ApplicationConfiguration.java
src/main/java/de/juplo/kafka/ExampleConsumer.java

index 116d63d..0046f8f 100644 (file)
@@ -27,7 +27,7 @@ public class ApplicationConfiguration
             kafkaConsumer);
   }
 
-  @Bean
+  @Bean(destroyMethod = "")
   public KafkaConsumer<String, String> kafkaConsumer(ApplicationProperties properties)
   {
     Properties props = new Properties();
index 13431d3..3206067 100644 (file)
@@ -73,6 +73,8 @@ public class ExampleConsumer implements Runnable
     }
     finally
     {
+      log.info("{} - Closing the KafkaConsumer", id);
+      consumer.close();
       log.info("{}: Consumed {} messages in total, exiting!", id, consumed);
     }
   }