From: Kai Moritz Date: Tue, 8 Apr 2025 05:23:39 +0000 (+0200) Subject: GRÜN: Verhalten für User-Header korrigiert X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=f5124b7fa473366df7232ea96b1212a4da3e52db;p=demos%2Fkafka%2Ftraining GRÜN: Verhalten für User-Header korrigiert --- diff --git a/src/main/java/de/juplo/kafka/DeadLetterController.java b/src/main/java/de/juplo/kafka/DeadLetterController.java index a0e0b1c..17cc7ea 100644 --- a/src/main/java/de/juplo/kafka/DeadLetterController.java +++ b/src/main/java/de/juplo/kafka/DeadLetterController.java @@ -2,6 +2,7 @@ package de.juplo.kafka; import de.juplo.kafka.exceptions.NonExistentPartitionException; import org.apache.kafka.clients.consumer.OffsetOutOfRangeException; +import org.apache.kafka.common.header.Header; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -42,16 +43,23 @@ public class DeadLetterController { return deadLetterConsumer .requestRecord(partition, offset) - .map(record -> ResponseEntity - .ok() - .contentType(mediaType) - .header( + .map(record -> + { + ResponseEntity.BodyBuilder builder = ResponseEntity.ok().contentType(mediaType); + + builder.header( prefixed(KEY), - UriUtils.encodePathSegment(new String(record.key()), StandardCharsets.UTF_8)) - .header( + UriUtils.encodePathSegment(new String(record.key()), StandardCharsets.UTF_8)); + builder.header( prefixed(TIMESTAMP), - Long.toString(record.timestamp())) - .body(record.value())); + Long.toString(record.timestamp())); + + record.headers().forEach(header -> builder.header( + UriUtils.encodePathSegment(prefixed(header.key()), StandardCharsets.UTF_8), + UriUtils.encodePathSegment(new String(header.value(), StandardCharsets.UTF_8), StandardCharsets.UTF_8))); + + return builder.body(record.value()); + }); } String prefixed(String headerName)