Endopint zum abfragen der Offsets der zugeordneten Partitionen offset-endpoint
authorKai Moritz <kai@juplo.de>
Sat, 9 Apr 2022 19:37:46 +0000 (21:37 +0200)
committerKai Moritz <kai@juplo.de>
Sat, 9 Apr 2022 19:42:16 +0000 (21:42 +0200)
src/main/java/de/juplo/kafka/DriverController.java
src/main/java/de/juplo/kafka/EndlessConsumer.java

index 93e2856..7847495 100644 (file)
@@ -1,11 +1,14 @@
 package de.juplo.kafka;
 
 import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 
 
@@ -34,4 +37,10 @@ public class DriverController
   {
     return consumer.getSeen();
   }
+
+  @GetMapping("offset/{partition}")
+  public ResponseEntity<Long> offset(@PathVariable("partition") Integer partition)
+  {
+    return ResponseEntity.of(consumer.getOffset(partition));
+  }
 }
index 803c76e..35e836c 100644 (file)
@@ -179,6 +179,11 @@ public class EndlessConsumer implements Runnable
     future = executor.submit(this);
   }
 
+  public Optional<Long> getOffset(Integer partition)
+  {
+    return Optional.ofNullable(offsets.get(partition));
+  }
+
   public synchronized void stop() throws ExecutionException, InterruptedException
   {
     boolean stateChanged = running.compareAndSet(true, false);