From 407eebbca9305537f2f4c3d2d6e57aa35b2a56d5 Mon Sep 17 00:00:00 2001 From: "bartlomiej.zylinski" Date: Thu, 6 Jun 2024 13:20:55 +0200 Subject: [PATCH] Added Docker Compose --- docker-compose.yaml | 24 ++++++++ pom.xml | 49 +++------------- src/main/java/otterjet/MsgsController.java | 58 +++++++++---------- .../monitoring/NatsMonitoringApiClient.java | 5 +- .../NatsMonitoringAutoConfiguration.java | 4 +- .../proto/ProtoBufMessageDeserializer.java | 2 +- 6 files changed, 65 insertions(+), 77 deletions(-) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..1c2b37d --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,24 @@ +version: '3.9' + +volumes: + nats-storage: + driver: local + +services: + nats: + image: nats:2.10.7 + command: [ "--jetstream", "-m", "8222" ] + deploy: + resources: + limits: + memory: 2g + reservations: + memory: 2g + volumes: + - nats-storage:/data + expose: + - "4222" + - "8222" + ports: + - "4222:4222" + - "8222:8222" \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7784fc8..fbe00ce 100644 --- a/pom.xml +++ b/pom.xml @@ -3,10 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.softwaremill - OtterJet + com.softwaremill.otter + jet 0.0.1 - war + jar Visualization of messages from a NATS JetStream server @@ -16,7 +16,6 @@ 17 2.41.1 1.19.3 - 5.10.1 3.2.0 2023.0.0 @@ -44,13 +43,6 @@ pom import - - org.junit - junit-bom - ${junit.version} - pom - import - @@ -107,11 +99,6 @@ 7.0 provided - - org.glassfish.ozark - ozark - 1.0.0-m02 - org.springframework.boot spring-boot-starter-web @@ -144,35 +131,20 @@ io.github.openfeign feign-jackson - - org.testcontainers - testcontainers - test - - - com.github.javafaker - javafaker - 1.0.2 - test - - - org.junit.jupiter - junit-jupiter - test - org.springframework.boot spring-boot-starter-test test - org.awaitility - awaitility + org.testcontainers + testcontainers test - org.assertj - assertj-core + com.github.javafaker + javafaker + 1.0.2 test @@ -185,11 +157,6 @@ - - org.apache.maven.plugins - maven-war-plugin - 3.4.0 - org.springframework.boot spring-boot-maven-plugin diff --git a/src/main/java/otterjet/MsgsController.java b/src/main/java/otterjet/MsgsController.java index e81debd..d16613d 100644 --- a/src/main/java/otterjet/MsgsController.java +++ b/src/main/java/otterjet/MsgsController.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.Optional; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -12,37 +13,34 @@ @Controller public class MsgsController { - private static final String TEMPLATE_NAME = "msgs-page"; - private static final Logger LOG = LoggerFactory.getLogger(MsgsController.class); + private static final String TEMPLATE_NAME = "msgs-page"; + private static final Logger LOG = LoggerFactory.getLogger(MsgsController.class); - private final ReaderService readerService; - private String subjectFilter; - private String typeFilter; - private String bodyContentFilter; + private final ReaderService readerService; - public MsgsController(ReaderService readerService) { - this.readerService = readerService; - } + public MsgsController(ReaderService readerService) { + this.readerService = readerService; + } - @GetMapping("/msgs") - public String page( - @RequestParam(value = "subject", required = false) String subject, - @RequestParam(value = "type", required = false) String type, - @RequestParam(value = "bodyContent", required = false) String bodyContent, - @RequestParam(value = "page", defaultValue = "0") int page, - @RequestParam(value = "size", defaultValue = "10") int size, - Model model) { - this.subjectFilter = Optional.ofNullable(subject).orElse(""); - this.typeFilter = Optional.ofNullable(type).orElse(""); - this.bodyContentFilter = Optional.ofNullable(bodyContent).orElse(""); - List filteredMessages = readerService.filter(subjectFilter, typeFilter, page, size, bodyContentFilter); - LOG.info("amount of read messages: " + filteredMessages.size()); - model.addAttribute("messages", filteredMessages); - model.addAttribute("subject", subjectFilter); - model.addAttribute("type", typeFilter); - model.addAttribute("bodyContent", bodyContentFilter); - model.addAttribute("page", page); - model.addAttribute("size", size); - return TEMPLATE_NAME; - } + @GetMapping("/msgs") + public String page( + @RequestParam(value = "subject", required = false) String subject, + @RequestParam(value = "type", required = false) String type, + @RequestParam(value = "bodyContent", required = false) String bodyContent, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "10") int size, + Model model) { + String subjectFilter = Optional.ofNullable(subject).orElse(""); + String typeFilter = Optional.ofNullable(type).orElse(""); + String bodyContentFilter = Optional.ofNullable(bodyContent).orElse(""); + List filteredMessages = readerService.filter(subjectFilter, typeFilter, page, size, bodyContentFilter); + LOG.info("amount of read messages: " + filteredMessages.size()); + model.addAttribute("messages", filteredMessages); + model.addAttribute("subject", subjectFilter); + model.addAttribute("type", typeFilter); + model.addAttribute("bodyContent", bodyContentFilter); + model.addAttribute("page", page); + model.addAttribute("size", size); + return TEMPLATE_NAME; + } } diff --git a/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java b/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java index 0e696bc..5caa4cf 100644 --- a/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java +++ b/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java @@ -1,9 +1,8 @@ package otterjet.monitoring; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.GetMapping; interface NatsMonitoringApiClient { - @RequestMapping(method = RequestMethod.GET, value = "/jsz?streams=true&config=true") + @GetMapping("/jsz?streams=true&config=true") JetStreamMonitoringResponse getJetStreamMonitoringData(); } diff --git a/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java b/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java index dd8430e..3c2f461 100644 --- a/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java +++ b/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java @@ -16,7 +16,7 @@ class NatsMonitoringAutoConfiguration { @Configuration - @ConditionalOnExpression("'${nats.server.monitoring.port:}' != ''") // monitoring configured + @ConditionalOnExpression("'${nats.server.monitoring.port:}' != ''") static class NatsMonitoringEnabledConfiguration { @Bean @@ -48,7 +48,7 @@ private static String createNatsMonitoringUrl( } @Configuration - @ConditionalOnExpression("'${nats.server.monitoring.port:}' == ''") // monitoring not configured + @ConditionalOnExpression("'${nats.server.monitoring.port:}' == ''") @AutoConfigureAfter(NatsMonitoringEnabledConfiguration.class) static class NatsMonitoringDisabledConfiguration { diff --git a/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java b/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java index d077985..f40a703 100644 --- a/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java +++ b/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java @@ -52,7 +52,7 @@ public DeserializedMessage deserializeMessage(ByteBuffer buffer) { final var descriptors = descs.stream() .flatMap(desc -> desc.getMessageTypes().stream()) - .collect(Collectors.toList()); + .toList(); final var messageDescriptor = descriptors.stream() .filter(desc -> messageTypeName.equals(desc.getName()) || messageTypeName.equals(desc.getFullName()))