From: Kai Moritz Date: Tue, 11 Feb 2025 10:12:58 +0000 (+0100) Subject: `CompletableFuture.whenComplete(...)` ist deutlich näher an dem Callback X-Git-Tag: spring/spring-producer--kafkatemplate--COMMITS--2025-02 X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=163b5d69e8f77e4727d8cbd562f8e3049eea9a1f;p=demos%2Fkafka%2Ftraining `CompletableFuture.whenComplete(...)` ist deutlich näher an dem Callback --- diff --git a/src/main/java/de/juplo/kafka/ExampleProducer.java b/src/main/java/de/juplo/kafka/ExampleProducer.java index 864eed2..143472d 100644 --- a/src/main/java/de/juplo/kafka/ExampleProducer.java +++ b/src/main/java/de/juplo/kafka/ExampleProducer.java @@ -82,12 +82,12 @@ public class ExampleProducer implements Runnable { final long time = System.currentTimeMillis(); - CompletableFuture> completableFuture = kafkaTemplate.send(topic, key, value); - - completableFuture.thenAccept(result -> + kafkaTemplate.send(topic, key, value).whenComplete((result, e) -> + { + long now = System.currentTimeMillis(); + if (e == null) { // HANDLE SUCCESS - long now = System.currentTimeMillis(); RecordMetadata metadata = result.getRecordMetadata(); produced++; log.debug( @@ -100,12 +100,10 @@ public class ExampleProducer implements Runnable metadata.timestamp(), now - time ); - }); - - completableFuture.exceptionally(e -> + } + else { // HANDLE ERROR - long now = System.currentTimeMillis(); log.error( "{} - ERROR for message {}={}, latency={}ms: {}", id, @@ -114,8 +112,8 @@ public class ExampleProducer implements Runnable now - time, e.toString() ); - return null; - }); + } + }); long now = System.currentTimeMillis(); log.trace(