From f5124b7fa473366df7232ea96b1212a4da3e52db Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Tue, 8 Apr 2025 07:23:39 +0200 Subject: [PATCH] =?utf8?q?GR=C3=9CN:=20Verhalten=20f=C3=BCr=20User-Header?= =?utf8?q?=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../de/juplo/kafka/DeadLetterController.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) 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) -- 2.20.1