From: Kai Moritz Date: Mon, 7 Apr 2025 20:30:32 +0000 (+0200) Subject: `Content-Type` der REST-Antwort ist konfigurierbar X-Git-Tag: consumer/nodlt--2026-03-20--19-06~10 X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=4313f0059958681a1aa057918a887357c9dd0b85;p=demos%2Fkafka%2Ftraining `Content-Type` der REST-Antwort ist konfigurierbar --- diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 8e4dd4cd..47f7fa68 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -206,6 +206,7 @@ services: juplo.bootstrap-server: kafka:9092 juplo.client-id: ute juplo.consumer.topic: test + juplo.controller.media-type: text/plain ports: - 8881:8881 diff --git a/src/main/java/de/juplo/kafka/ApplicationProperties.java b/src/main/java/de/juplo/kafka/ApplicationProperties.java index ee3d107c..626db844 100644 --- a/src/main/java/de/juplo/kafka/ApplicationProperties.java +++ b/src/main/java/de/juplo/kafka/ApplicationProperties.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; @@ -22,13 +23,15 @@ public class ApplicationProperties private String clientId; @NotNull - private ConsumerProperties consumer; + private ApplicationProperties.Consumer consumer; + @NotNull + private ApplicationProperties.Controller controller; @Validated @Getter @Setter - static class ConsumerProperties + static class Consumer { @NotNull @NotEmpty @@ -40,4 +43,14 @@ public class ApplicationProperties @NotEmpty private String headerPrefix; } + + @Validated + @Getter + @Setter + static class Controller + { + @NotNull + @NotEmpty + private MediaType mediaType; + } } diff --git a/src/main/java/de/juplo/kafka/DeadLetterController.java b/src/main/java/de/juplo/kafka/DeadLetterController.java index 64553ea5..c0d13925 100644 --- a/src/main/java/de/juplo/kafka/DeadLetterController.java +++ b/src/main/java/de/juplo/kafka/DeadLetterController.java @@ -2,8 +2,8 @@ package de.juplo.kafka; import de.juplo.kafka.exceptions.NonExistentPartitionException; import org.apache.kafka.clients.consumer.OffsetOutOfRangeException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriUtils; @@ -15,8 +15,17 @@ import java.nio.charset.StandardCharsets; @RestController public class DeadLetterController { - @Autowired - DeadLetterConsumer deadLetterConsumer; + private final DeadLetterConsumer deadLetterConsumer; + private final MediaType mediaType; + + + public DeadLetterController( + DeadLetterConsumer deadLetterConsumer, + ApplicationProperties properties) + { + this.deadLetterConsumer = deadLetterConsumer; + this.mediaType = properties.getController().getMediaType(); + } @GetMapping(path = "/{partition}/{offset}") @@ -28,6 +37,7 @@ public class DeadLetterController .requestRecord(partition, offset) .map(record -> ResponseEntity .ok() + .contentType(mediaType) .header( deadLetterConsumer.prefixed(DeadLetterConsumer.KEY), UriUtils.encodePathSegment(record.key(), StandardCharsets.UTF_8)) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 31bec847..652cc9c1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,6 +5,8 @@ juplo: group-id: nodlt topic: test header-prefix: X-RECORD- + controller: + media-type: application/json management: endpoint: shutdown: