Springify: Die `@PreDestroy`-Methode wird nicht benötigt
[demos/kafka/training] / src / main / java / de / juplo / kafka / EndlessConsumer.java
index ea899cc..5e76865 100644 (file)
@@ -9,7 +9,6 @@ import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.kafka.config.KafkaListenerEndpointRegistry;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PreDestroy;
 import java.util.List;
 import java.util.function.Consumer;
 
@@ -59,21 +58,20 @@ public class EndlessConsumer<K, V>
 
   public synchronized void start()
   {
+    if (registry.getListenerContainer(id).isChildRunning())
+      throw new IllegalStateException("Consumer instance " + id + " is already running!");
+
     log.info("{} - Starting - consumed {} messages before", id, consumed);
     registry.getListenerContainer(id).start();
   }
 
   public synchronized void stop()
   {
+    if (!registry.getListenerContainer(id).isChildRunning())
+      throw new IllegalStateException("Consumer instance " + id + " is not running!");
+
     log.info("{} - Stopping", id);
     registry.getListenerContainer(id).stop();
     log.info("{} - Stopped - consumed {} messages so far", id, consumed);
   }
-
-  @PreDestroy
-  public void destroy()
-  {
-    log.info("{} - Destroy!", id);
-    stop();
-  }
 }