From 427cec26c42d914a1b9f4fe0c49a94cac7c67f9c Mon Sep 17 00:00:00 2001 From: "Omar.Nassar" Date: Tue, 28 Apr 2020 01:51:27 +0300 Subject: [PATCH 1/5] implementing 'convert to record TODOs' --- .../api/composite/dto/ProductAggregate.java | 23 ++++-------- .../composite/dto/RecommendationSummary.java | 19 +++------- .../api/composite/dto/ReviewSummary.java | 17 +++------ .../api/composite/dto/ServiceAddresses.java | 17 +++------ .../ms/store/pcs/StoreServiceApplication.java | 9 +++++ .../store/pcs/service/StoreServiceImpl.java | 34 +++++++++--------- .../siriusxi/ms/store/pcs/MessagingTests.java | 36 +++++++++---------- 7 files changed, 64 insertions(+), 91 deletions(-) diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ProductAggregate.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ProductAggregate.java index ec53b1d3..197137b5 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ProductAggregate.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ProductAggregate.java @@ -1,20 +1,11 @@ package com.siriusxi.ms.store.api.composite.dto; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - import java.util.List; -// TODO convert it to record -@Data -@NoArgsConstructor(force = true) -@AllArgsConstructor -public class ProductAggregate { - private final int productId; - private final String name; - private final int weight; - private final List recommendations; - private final List reviews; - private final ServiceAddresses serviceAddresses; -} +public record ProductAggregate (int productId, + String name, + int weight, + List recommendations, + Listreviews, + ServiceAddresses serviceAddresses) { +} \ No newline at end of file diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java index bfaf5a02..8cc69d56 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java @@ -1,16 +1,7 @@ package com.siriusxi.ms.store.api.composite.dto; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -// TODO convert it to record -@Data -@NoArgsConstructor(force = true) -@AllArgsConstructor -public class RecommendationSummary { - private final int recommendationId; - private final String author; - private final int rate; - private final String content; -} +public record RecommendationSummary(int recommendationId, + String author, + int rate, + String content) { +} \ No newline at end of file diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java index b5a42c09..4c479d67 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java @@ -1,16 +1,7 @@ package com.siriusxi.ms.store.api.composite.dto; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -// TODO convert it to record -@Data -@NoArgsConstructor(force = true) -@AllArgsConstructor -public class ReviewSummary { - private final int reviewId; - private final String author; - private final String subject; - private final String content; +public record ReviewSummary(int reviewId, + String author, + String subject, + String content){ } diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java index 9077d050..f8e07598 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java @@ -1,16 +1,7 @@ package com.siriusxi.ms.store.api.composite.dto; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -// TODO convert it to record -@Data -@NoArgsConstructor(force = true) -@AllArgsConstructor -public class ServiceAddresses { - private final String storeService; - private final String productService; - private final String reviewService; - private final String recommendationService; +public record ServiceAddresses( String storeService, + String productService, + String reviewService, + String recommendationService) { } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java index c2cd537d..07a396c6 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java @@ -1,11 +1,14 @@ package com.siriusxi.ms.store.pcs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import springfox.documentation.swagger2.annotations.EnableSwagger2WebFlux; @SpringBootApplication @@ -21,4 +24,10 @@ public static void main(String[] args) { public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } + + @Bean + public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { + return builder -> builder.visibility( PropertyAccessor.FIELD, + JsonAutoDetect.Visibility.ANY); + } } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/service/StoreServiceImpl.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/service/StoreServiceImpl.java index ae239aed..e55a7306 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/service/StoreServiceImpl.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/service/StoreServiceImpl.java @@ -38,45 +38,45 @@ public void createProduct(ProductAggregate body) { log.debug( "createCompositeProduct: creates a new composite entity for productId: {}", - body.getProductId()); + body.productId()); - var product = new Product(body.getProductId(), body.getName(), body.getWeight(), null); + var product = new Product(body.productId(), body.name(), body.weight(), null); integration.createProduct(product); - if (body.getRecommendations() != null) { - body.getRecommendations() + if (body.recommendations() != null) { + body.recommendations() .forEach( r -> { var recommendation = new Recommendation( - body.getProductId(), - r.getRecommendationId(), - r.getAuthor(), - r.getRate(), - r.getContent(), + body.productId(), + r.recommendationId(), + r.author(), + r.rate(), + r.content(), null); integration.createRecommendation(recommendation); }); } - if (body.getReviews() != null) { - body.getReviews() + if (body.reviews() != null) { + body.reviews() .forEach( r -> { Review review = new Review( - body.getProductId(), - r.getReviewId(), - r.getAuthor(), - r.getSubject(), - r.getContent(), + body.productId(), + r.reviewId(), + r.author(), + r.subject(), + r.content(), null); integration.createReview(review); }); } log.debug( "createCompositeProduct: composite entities created for productId: {}", - body.getProductId()); + body.productId()); } catch (RuntimeException re) { log.warn("createCompositeProduct failed: {}", re.toString()); diff --git a/store-services/store-service/src/test/java/com/siriusxi/ms/store/pcs/MessagingTests.java b/store-services/store-service/src/test/java/com/siriusxi/ms/store/pcs/MessagingTests.java index df78471f..0e8f85ed 100644 --- a/store-services/store-service/src/test/java/com/siriusxi/ms/store/pcs/MessagingTests.java +++ b/store-services/store-service/src/test/java/com/siriusxi/ms/store/pcs/MessagingTests.java @@ -66,9 +66,9 @@ public void createCompositeProduct1() { Event expectedEvent = new Event<>( CREATE, - composite.getProductId(), + composite.productId(), new Product( - composite.getProductId(), composite.getName(), composite.getWeight(), null)); + composite.productId(), composite.name(), composite.weight(), null)); assertThat(queueProducts, is(receivesPayloadThat(sameEventExceptCreatedAt(expectedEvent)))); // Assert none recommendations and review events @@ -96,25 +96,25 @@ public void createCompositeProduct2() { Event expectedProductEvent = new Event<>( CREATE, - composite.getProductId(), + composite.productId(), new Product( - composite.getProductId(), composite.getName(), composite.getWeight(), null)); + composite.productId(), composite.name(), composite.weight(), null)); assertThat(queueProducts, receivesPayloadThat(sameEventExceptCreatedAt(expectedProductEvent))); // Assert one create recommendation event queued up assertEquals(1, queueRecommendations.size()); - RecommendationSummary rec = composite.getRecommendations().get(0); + RecommendationSummary rec = composite.recommendations().get(0); Event expectedRecommendationEvent = new Event<>( CREATE, - composite.getProductId(), + composite.productId(), new Recommendation( - composite.getProductId(), - rec.getRecommendationId(), - rec.getAuthor(), - rec.getRate(), - rec.getContent(), + composite.productId(), + rec.recommendationId(), + rec.author(), + rec.rate(), + rec.content(), null)); assertThat( queueRecommendations, @@ -123,17 +123,17 @@ public void createCompositeProduct2() { // Assert one create review event queued up assertEquals(1, queueReviews.size()); - ReviewSummary rev = composite.getReviews().get(0); + ReviewSummary rev = composite.reviews().get(0); Event expectedReviewEvent = new Event<>( CREATE, - composite.getProductId(), + composite.productId(), new Review( - composite.getProductId(), - rev.getReviewId(), - rev.getAuthor(), - rev.getSubject(), - rev.getContent(), + composite.productId(), + rev.reviewId(), + rev.author(), + rev.subject(), + rev.content(), null)); assertThat(queueReviews, receivesPayloadThat(sameEventExceptCreatedAt(expectedReviewEvent))); From a4ff7a854b3b82ee588d79debf72e80c83789220 Mon Sep 17 00:00:00 2001 From: Mohamed Taman Date: Tue, 28 Apr 2020 16:41:44 +0200 Subject: [PATCH 2/5] System enhancements 1. Reformat all records and Event class to use same datetime. 1. Create a GlobalConfiguration class. 1. Removed custom Jakson properties from HttpErrorInfo. --- .../springy_store_project_structure.png | Bin 112094 -> 0 bytes .../api/composite/dto/ProductAggregate.java | 14 ++++++- .../composite/dto/RecommendationSummary.java | 13 ++++++ .../api/composite/dto/ReviewSummary.java | 13 ++++++ .../api/composite/dto/ServiceAddresses.java | 14 +++++++ .../siriusxi/ms/store/api/event/Event.java | 37 ++++++++++++------ .../util/config/GlobalConfiguration.java | 32 +++++++++++++++ .../ms/store/util/http/HttpErrorInfo.java | 32 +++++---------- .../ms/store/pcs/StoreServiceApplication.java | 9 ----- .../pcs/config/StoreServiceConfiguration.java | 8 +++- .../pcs/integration/StoreIntegration.java | 32 +++++++-------- 11 files changed, 142 insertions(+), 62 deletions(-) delete mode 100644 docs/stage1/springy_store_project_structure.png create mode 100644 store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java diff --git a/docs/stage1/springy_store_project_structure.png b/docs/stage1/springy_store_project_structure.png deleted file mode 100644 index b33e522964b7644640a28f232799a50efafe2637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112094 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

%y*`>ckDe3MNx{y|qsO*?@Qte+>PytU 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

n@ov0?ev2(CfZ%Gr;6}TTuD(!hZ4Bd@q7VV-$Aa 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 NM?+uz{TProductAggregate that hold all the product aggregate information. + * + * @implNote Since it is a record and not normal POJO, so it needs some customizations + * to be serialized to JSON and this is done with method + * GlobalConfiguration.jacksonCustomizer(). + * + * @see java.lang.Record + * @see com.siriusxi.ms.store.util.config.GlobalConfiguration + * @author mohamed.taman + * @version v4.6 + * @since v0.1 + */ public record ProductAggregate (int productId, String name, int weight, diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java index 8cc69d56..e9ad8a2d 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/RecommendationSummary.java @@ -1,5 +1,18 @@ package com.siriusxi.ms.store.api.composite.dto; +/** + * Record RecommendationSummary that hold all the product recommendations. + * + * @implNote Since it is a record and not normal POJO, so it needs some customizations + * to be serialized to JSON and this is done with method + * GlobalConfiguration.jacksonCustomizer(). + * + * @see java.lang.Record + * @see com.siriusxi.ms.store.util.config.GlobalConfiguration + * @author mohamed.taman + * @version v4.6 + * @since v0.1 + */ public record RecommendationSummary(int recommendationId, String author, int rate, diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java index 4c479d67..25434a19 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ReviewSummary.java @@ -1,5 +1,18 @@ package com.siriusxi.ms.store.api.composite.dto; +/** + * Record ReviewSummary that hold all product reviews. + * + * @implNote Since it is a record and not normal POJO, so it needs some customizations + * to be serialized to JSON and this is done with method + * GlobalConfiguration.jacksonCustomizer(). + * + * @see java.lang.Record + * @see com.siriusxi.ms.store.util.config.GlobalConfiguration + * @author mohamed.taman + * @version v4.6 + * @since v0.1 + */ public record ReviewSummary(int reviewId, String author, String subject, diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java index f8e07598..41157523 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/composite/dto/ServiceAddresses.java @@ -1,5 +1,19 @@ package com.siriusxi.ms.store.api.composite.dto; +/** + * Record ServiceAddresses that hold all services addresses involved in the product + * call. + * + * @implNote Since it is a record and not normal POJO, so it needs some customizations + * to be serialized to JSON and this is done with method + * GlobalConfiguration.jacksonCustomizer(). + * + * @see java.lang.Record + * @see com.siriusxi.ms.store.util.config.GlobalConfiguration + * @author mohamed.taman + * @version v4.6 + * @since v0.1 + */ public record ServiceAddresses( String storeService, String productService, String reviewService, diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java index 462d379d..8b40d0d5 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java @@ -1,6 +1,12 @@ package com.siriusxi.ms.store.api.event; -import lombok.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.Setter; import java.time.LocalDateTime; @@ -13,17 +19,22 @@ @Setter(NONE) public class Event { - public enum Type {CREATE, DELETE} + private Event.Type eventType; + private K key; + private T data; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSS") + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime eventCreatedAt; - private Event.Type eventType; - private K key; - private T data; - private LocalDateTime eventCreatedAt; + public Event(Type eventType, K key, T data) { + this.eventType = eventType; + this.key = key; + this.data = data; + this.eventCreatedAt = now(); + } - public Event(Type eventType, K key, T data) { - this.eventType = eventType; - this.key = key; - this.data = data; - this.eventCreatedAt = now(); - } -} \ No newline at end of file + public enum Type { + CREATE, + DELETE + } +} diff --git a/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java new file mode 100644 index 00000000..29f1d04e --- /dev/null +++ b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java @@ -0,0 +1,32 @@ +package com.siriusxi.ms.store.util.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +/** + * Class GlobalConfiguration holds all configurations that used by all the system + * services. + * + * @author mohamed.taman + * @version v4.6 + * @since v0.1 + */ +@Configuration +public class GlobalConfiguration { + + /** + * This bean is for Java 14 record to be serialized as JSON + * + * @return Jackson2ObjectMapperBuilderCustomizer builder + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { + return builder -> + builder + .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) + // human readable + .indentOutput(true); + } +} diff --git a/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/http/HttpErrorInfo.java b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/http/HttpErrorInfo.java index 545f252f..2a6b7881 100644 --- a/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/http/HttpErrorInfo.java +++ b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/http/HttpErrorInfo.java @@ -1,9 +1,6 @@ package com.siriusxi.ms.store.util.http; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer; import org.springframework.http.HttpStatus; @@ -14,21 +11,22 @@ * Record HttpErrorInfo which encapsulate all HTTP errors sent to client. * * @implNote Since it is a record and not normal POJO, so it needs some customizations - * to be serialized to JSON. - * @see java.lang.Record + * to be serialized to JSON and this is done with method + * GlobalConfiguration.jacksonCustomizer(). + * + * @see java.lang.Record + * @see com.siriusxi.ms.store.util.config.GlobalConfiguration * @author mohamed.taman - * @version v0.4 + * @version v4.6 * @since v0.1 */ public record HttpErrorInfo( - @JsonProperty("httpStatus")HttpStatus httpStatus, - @JsonProperty("message")String message, - @JsonProperty("path")String path, - @JsonProperty("time") + HttpStatus httpStatus, + String message, + String path, @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ") @JsonSerialize(using = ZonedDateTimeSerializer.class) - ZonedDateTime timestamp -) { + ZonedDateTime timestamp) { /** * Instantiates a new Http error info. @@ -40,14 +38,4 @@ public record HttpErrorInfo( public HttpErrorInfo(HttpStatus httpStatus, String path, String message) { this(httpStatus, message, path, ZonedDateTime.now()); } - - -public static void main(String[] args) throws JsonProcessingException { - HttpErrorInfo err = new HttpErrorInfo(HttpStatus.BAD_REQUEST, "/path", "Error man"); - HttpErrorInfo err1 = new HttpErrorInfo(HttpStatus.UNPROCESSABLE_ENTITY, "Error message man", - "/path1234", ZonedDateTime.now()); - ObjectMapper mapper = new ObjectMapper(); - System.out.println(mapper.writeValueAsString(err)); - System.out.println(mapper.writeValueAsString(err1)); - } } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java index 07a396c6..c2cd537d 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java @@ -1,14 +1,11 @@ package com.siriusxi.ms.store.pcs; -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.PropertyAccessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import springfox.documentation.swagger2.annotations.EnableSwagger2WebFlux; @SpringBootApplication @@ -24,10 +21,4 @@ public static void main(String[] args) { public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } - - @Bean - public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { - return builder -> builder.visibility( PropertyAccessor.FIELD, - JsonAutoDetect.Visibility.ANY); - } } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java index 9c7d1f65..cc9fd00d 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java @@ -57,7 +57,13 @@ public StoreServiceConfiguration(StoreIntegration integration) { this.integration = integration; } - @Bean(name = "Core System Microservices") + /** + * This method is to check all the services health status, and store service health will be only + * in up health state if and only if all of the core services and dependencies are up and running. + * + * @return ReactiveHealthContributor information about all the core microservices. + */ + @Bean(name = "Core Microservices") ReactiveHealthContributor coreServices() { ReactiveHealthIndicator productHealthIndicator = integration::getProductHealth; diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java index 236657c0..b5d1ca18 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java @@ -38,6 +38,22 @@ @Log4j2 public class StoreIntegration implements ProductService, RecommendationService, ReviewService { + public interface MessageSources { + + String OUTPUT_PRODUCTS = "output-products"; + String OUTPUT_RECOMMENDATIONS = "output-recommendations"; + String OUTPUT_REVIEWS = "output-reviews"; + + @Output(OUTPUT_PRODUCTS) + MessageChannel outputProducts(); + + @Output(OUTPUT_RECOMMENDATIONS) + MessageChannel outputRecommendations(); + + @Output(OUTPUT_REVIEWS) + MessageChannel outputReviews(); + } + private final String PRODUCT_ID_QUERY_PARAM = "?productId="; private final WebClient.Builder webClientBuilder; private WebClient webClient; @@ -230,20 +246,4 @@ private String getErrorMessage(WebClientResponseException ex) { return ex.getMessage(); } } - - public interface MessageSources { - - String OUTPUT_PRODUCTS = "output-products"; - String OUTPUT_RECOMMENDATIONS = "output-recommendations"; - String OUTPUT_REVIEWS = "output-reviews"; - - @Output(OUTPUT_PRODUCTS) - MessageChannel outputProducts(); - - @Output(OUTPUT_RECOMMENDATIONS) - MessageChannel outputRecommendations(); - - @Output(OUTPUT_REVIEWS) - MessageChannel outputReviews(); - } } From 62985cd490506d11c8801586b22ab2831bff747b Mon Sep 17 00:00:00 2001 From: Mohamed Taman Date: Tue, 28 Apr 2020 18:34:03 +0200 Subject: [PATCH 3/5] Date time fix to Event.java to pass all tests. --- .../main/java/com/siriusxi/ms/store/api/event/Event.java | 5 ----- .../siriusxi/ms/store/util/config/GlobalConfiguration.java | 6 +++--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java index 8b40d0d5..dbcd437d 100644 --- a/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java +++ b/store-common/store-api/src/main/java/com/siriusxi/ms/store/api/event/Event.java @@ -1,8 +1,5 @@ package com.siriusxi.ms.store.api.event; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -22,8 +19,6 @@ public class Event { private Event.Type eventType; private K key; private T data; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSS") - @JsonSerialize(using = LocalDateTimeSerializer.class) private LocalDateTime eventCreatedAt; public Event(Type eventType, K key, T data) { diff --git a/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java index 29f1d04e..0790cac5 100644 --- a/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java +++ b/store-common/store-utils/src/main/java/com/siriusxi/ms/store/util/config/GlobalConfiguration.java @@ -25,8 +25,8 @@ public class GlobalConfiguration { public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { return builder -> builder - .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) - // human readable - .indentOutput(true); + .visibility( + PropertyAccessor.FIELD, + JsonAutoDetect.Visibility.ANY); } } From 9e25dcf6ff791515555179f74a7ca7aba08c6c3d Mon Sep 17 00:00:00 2001 From: Mohamed Taman Date: Thu, 30 Apr 2020 02:00:29 +0200 Subject: [PATCH 4/5] Adding API gateway - All test cases runs for the whole system. - Reduce application.yml properties - add new system diagram. - Update README.md. --- README.md | 24 ++-- docker-compose-kafka.yml | 10 ++ docker-compose-partitions.yml | 10 ++ docker-compose.yml | 10 ++ docs/stage1/app_ms_landscape.png | Bin 111604 -> 79113 bytes pom.xml | 1 + store-base/store-cloud-chassis/pom.xml | 8 ++ store-base/store-service-chassis/pom.xml | 8 -- store-cloud-infra/edge-server/Dockerfile | 60 ++++++++++ store-cloud-infra/edge-server/pom.xml | 41 +++++++ .../infra/gateway/EdgeServerApplication.java | 22 ++++ .../gateway/config/GatewayConfiguration.java | 73 +++++++++++ .../src/main/resources/application.yml | 63 ++++++++++ .../gateway/EdgeServerApplicationTests.java | 17 +++ .../src/main/resources/application.yml | 26 ++-- .../{application.yaml => application.yml} | 85 ++++++------- .../{application.yaml => application.yml} | 89 ++++++-------- .../src/main/resources/application.yaml | 113 +++++++----------- ...ication-test.yaml => application-test.yml} | 0 .../{application.yaml => application.yml} | 76 +++++------- 20 files changed, 485 insertions(+), 251 deletions(-) create mode 100644 store-cloud-infra/edge-server/Dockerfile create mode 100644 store-cloud-infra/edge-server/pom.xml create mode 100644 store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplication.java create mode 100644 store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/config/GatewayConfiguration.java create mode 100644 store-cloud-infra/edge-server/src/main/resources/application.yml create mode 100644 store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java rename store-services/product-service/src/main/resources/{application.yaml => application.yml} (63%) rename store-services/recommendation-service/src/main/resources/{application.yaml => application.yml} (60%) rename store-services/review-service/src/test/resources/{application-test.yaml => application-test.yml} (100%) rename store-services/store-service/src/main/resources/{application.yaml => application.yml} (80%) diff --git a/README.md b/README.md index 679f4c5a..12e8617e 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ Springy Store μService --> Parent folder. |- store-cloud-chassis --> Cloud services Parent POM, inherit from build contains all cloud libraries |- store-service-chassis --> Parent POM, inherits from cloud contains all microservices common libraries |-store-cloud-infra - |- eureka-server --> Service discovery server + |- eureka-server --> Service discovery server + |- edge-server --> API Gateway server |-store-common |- store-api --> API Endpoint and services definitions for all microservices |- store-utils --> Common utilities shared between all components @@ -66,7 +67,7 @@ The following topics are going to be covered in this 1st stage (other stages top - Adding automated tests of microservices in isolation. - Adding semi-automated tests to a microservice landscape. -### System Boundary - μServices Landscape (Release 4.5-Latest) +### System Boundary - μServices Landscape (Release 4.8-Latest) ![System Boundary](docs/stage1/app_ms_landscape.png) @@ -158,7 +159,7 @@ All build commands and test suite for each microservice should run successfully, ```bash ---------------< com.siriusxi.ms.store:store-aggregator >--------------- -[INFO] Building Springy Store Aggregator 1.0-SNAPSHOT [11/11] +[INFO] Building Springy Store Aggregator 1.0-SNAPSHOT [12/12] [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ store-aggregator --- @@ -175,6 +176,7 @@ All build commands and test suite for each microservice should run successfully, [INFO] Recommendation Service ............................. SUCCESS [ 8.463 s] [INFO] Store Service ...................................... SUCCESS [ 8.927 s] [INFO] Eureka Discovery Server ............................ SUCCESS [ 6.536 s] +[INFO] Edge Server ........................................ SUCCESS [ 32.108 s] [INFO] Springy Store Aggregator ........................... SUCCESS [ 0.100 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS @@ -198,6 +200,7 @@ All the **services**, **databases**, and **messaging service** will run in paral ```bash Creating network "ssm_default" with the default driver Creating ssm_eureka_1 ... done +Creating ssm_gateway_1 ... done Creating ssm_mysql_1 ... done Creating ssm_mongodb_1 ... done Creating ssm_rabbitmq_1 ... done @@ -235,7 +238,7 @@ This will result in the following response: { "status":"UP", "components":{ - "Core System Microservices":{ + "System Microservices":{ "status":"UP", "components":{ "Product Service":{ @@ -278,7 +281,7 @@ The result will look like this: ```bash Starting [Springy Store] full functionality testing.... -Start: Sun, Apr 12, 2020 2:34:19 PM +Start: Sun, Apr 30, 2020 2:34:19 PM HOST=localhost PORT=8080 Wait for: curl http://localhost:8080/actuator/health ... Ok @@ -302,13 +305,13 @@ Test OK (HTTP Code: 422, {"httpStatus":"UNPROCESSABLE_ENTITY","message":"Invalid Test OK (actual value: "Invalid productId: -1") Test OK (HTTP Code: 400, {"timestamp":"2020-04-12T12:34:26.471+00:00","path":"/store/api/v1/products/invalidProductId","status":400,"error":"Bad Request","message":"Type mismatch.","requestId":"044dcdf2-13"}) Test OK (actual value: "Type mismatch.") -End: Sun, Apr 12, 2020 2:34:26 PM +End: Sun, Apr 30, 2020 2:34:26 PM ``` ### Closing The Story -Finally, to close the story, we will need to shut down Microservices manually service by service -, hahaha just kidding, run the following script to shut down them all: +Finally, to close the story, we need to shut down Microservices manually service by service +, hahaha just kidding, run the following command to shut them all: ```bash mohamed.taman@DTLNV8 ~/springy-store-microservices @@ -326,6 +329,7 @@ Stopping ssm_store_1 ... done Stopping ssm_mysql_1 ... done Stopping ssm_rabbitmq_1 ... done Stopping ssm_eureka_1 ... done +Stopping ssm_gateway_1 ... done Removing ssm_recommendation_1 ... done Removing ssm_product_1 ... done Removing ssm_review_1 ... done @@ -334,11 +338,11 @@ Removing ssm_store_1 ... done Removing ssm_mysql_1 ... done Removing ssm_rabbitmq_1 ... done Removing ssm_eureka_1 ... done +Removing ssm_gateway_1 ... done Removing network ssm_default ``` ### The End Happy coding :) # License -Copyright (C) 2017-2020 Mohamed Taman -Licensed under the MIT License. +Copyright (C) 2017-2020 Mohamed Taman, Licensed under the MIT License. diff --git a/docker-compose-kafka.yml b/docker-compose-kafka.yml index 665c10c5..ef9923f1 100644 --- a/docker-compose-kafka.yml +++ b/docker-compose-kafka.yml @@ -119,6 +119,16 @@ services: - "8761:8761" restart: always ## End - Eureka Service Discovery definition + + ## Start - Edge Server definition + gateway: + build: store-cloud-infra/edge-server + ports: + - "8080:8080" + environment: + - SPRING_PROFILES_ACTIVE=docker + restart: on-failure + ## End - Edge Server definition # End - Cloud Infrastructure # Start - Data and transport Infrastructure diff --git a/docker-compose-partitions.yml b/docker-compose-partitions.yml index 8967e9c6..4df9d44f 100644 --- a/docker-compose-partitions.yml +++ b/docker-compose-partitions.yml @@ -105,6 +105,16 @@ services: - "8761:8761" restart: always ## End - Eureka Service Discovery definition + + ## Start - Edge Server definition + gateway: + build: store-cloud-infra/edge-server + ports: + - "8080:8080" + environment: + - SPRING_PROFILES_ACTIVE=docker + restart: on-failure + ## End - Edge Server definition # End - Cloud Infrastructure # Start - Data and transport Infrastructure diff --git a/docker-compose.yml b/docker-compose.yml index dfeb5c27..ca8d629a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,6 +53,16 @@ services: - "8761:8761" restart: on-failure ## End - Eureka Service Discovery definition + + ## Start - Edge Server definition + gateway: + build: store-cloud-infra/edge-server + ports: + - "8080:8080" + environment: + - SPRING_PROFILES_ACTIVE=docker + restart: on-failure + ## End - Edge Server definition # End - Cloud Infrastructure # Start - Data and transport Infrastructure diff --git a/docs/stage1/app_ms_landscape.png b/docs/stage1/app_ms_landscape.png index 84105d2ca3e1f7b164b50a8f0423eab49053c72b..24f0a8e6958847b275a854279b3f785c4ffe833c 100644 GIT binary patch literal 79113 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

L_4UNCk*)55^i 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/recommendation-service store-services/store-service store-cloud-infra/eureka-server + store-cloud-infra/edge-server diff --git a/store-base/store-cloud-chassis/pom.xml b/store-base/store-cloud-chassis/pom.xml index a20c412b..323638d9 100644 --- a/store-base/store-cloud-chassis/pom.xml +++ b/store-base/store-cloud-chassis/pom.xml @@ -16,6 +16,14 @@ pom + + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot diff --git a/store-base/store-service-chassis/pom.xml b/store-base/store-service-chassis/pom.xml index ed41725a..e1436027 100644 --- a/store-base/store-service-chassis/pom.xml +++ b/store-base/store-service-chassis/pom.xml @@ -17,14 +17,6 @@ pom - - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.cloud diff --git a/store-cloud-infra/edge-server/Dockerfile b/store-cloud-infra/edge-server/Dockerfile new file mode 100644 index 00000000..2ab0f476 --- /dev/null +++ b/store-cloud-infra/edge-server/Dockerfile @@ -0,0 +1,60 @@ +#### Start of builder image +# ------------------------ +# Builder stage to prepare application for final image +FROM openjdk:14-slim-buster as builder +WORKDIR temp + +# Fatjar location, but could be set to different location from command line +ARG JAR_FILE=target/*.jar + +# Copy fat jar file to current image builder +COPY ${JAR_FILE} application.jar + +# Extract the jar file layers +RUN java -Djarmode=layertools -jar --enable-preview application.jar extract + +# Workaround to avoid Copy command failure when directory is not exists. +RUN test ! -d ./snapshot-dependencies \ +&& mkdir snapshot-dependencies \ +&& echo "Directory [snapshot-dependencies] created." + +#### End of builder stage + +#### Start of actual image +# ------------------------ +# Build image based on JDK 14 base image, based on latest debian buster OS +FROM openjdk:14-slim-buster +VOLUME /tmp + +# Set image information, but could be set to different location from command line +ARG IMAGE_VERSION="1.0-SNAPSHOT" +ARG IMAGE_NAME="Edge Server" +ARG MAINTAINER="Mohamed Taman " + +LABEL version=${IMAGE_VERSION} name=${IMAGE_NAME} maintainer=${MAINTAINER} + +# Limiting security access to not user root user +RUN addgroup siriusxi && useradd -g siriusxi -ms /bin/bash taman + +# Setting user to current created user +USER taman + +# Set working directory to application folder +WORKDIR /home/taman/application + +# Copy all layers from builder stage to current image +COPY --from=builder temp/dependencies/ ./ +COPY --from=builder temp/snapshot-dependencies/ ./ +COPY --from=builder temp/spring-boot-loader/ ./ +COPY --from=builder temp/application/ ./ + +# Expose current server to port 8080 +EXPOSE 8761 + +ARG JAVA_OPTS="" + +# Run the application with JVM configs if any +ENTRYPOINT ["bash", "-c", \ +"java -server --enable-preview -XX:+UseContainerSupport -XX:+ShowCodeDetailsInExceptionMessages \ +-XX:+AlwaysActAsServerClassMachine -XX:+UseG1GC -XX:+UseStringDeduplication ${JAVA_OPTS} \ +org.springframework.boot.loader.JarLauncher ${0} ${@}"] \ No newline at end of file diff --git a/store-cloud-infra/edge-server/pom.xml b/store-cloud-infra/edge-server/pom.xml new file mode 100644 index 00000000..0a1d1dbe --- /dev/null +++ b/store-cloud-infra/edge-server/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + com.siriusxi.ms.store + store-cloud-chassis + 1.0-SNAPSHOT + ../store-base/store-cloud-chassis + + + com.siriusxi.cloud.infra + gateway + 1.0-SNAPSHOT + Edge Server + Spring Cloud API Gateway Server, based on Spring boot. + jar + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + + org.springframework.boot + spring-boot-starter-validation + runtime + + + + + diff --git a/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplication.java b/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplication.java new file mode 100644 index 00000000..cf694273 --- /dev/null +++ b/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplication.java @@ -0,0 +1,22 @@ +package com.siriusxi.cloud.infra.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.web.reactive.function.client.WebClient; + +@SpringBootApplication +public class EdgeServerApplication { + + @Bean + @LoadBalanced + public WebClient.Builder loadBalancedWebClientBuilder() { + return WebClient.builder(); + } + + public static void main(String[] args) { + SpringApplication.run(EdgeServerApplication.class, args); + } + +} diff --git a/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/config/GatewayConfiguration.java b/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/config/GatewayConfiguration.java new file mode 100644 index 00000000..d7288321 --- /dev/null +++ b/store-cloud-infra/edge-server/src/main/java/com/siriusxi/cloud/infra/gateway/config/GatewayConfiguration.java @@ -0,0 +1,73 @@ +package com.siriusxi.cloud.infra.gateway.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.CompositeReactiveHealthContributor; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.ReactiveHealthContributor; +import org.springframework.boot.actuate.health.ReactiveHealthIndicator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.util.Map; + +@Configuration +@Log4j2 +public class GatewayConfiguration { + + private final WebClient.Builder webClientBuilder; + + private WebClient webClient; + + @Autowired + public GatewayConfiguration(WebClient.Builder webClientBuilder) { + this.webClientBuilder = webClientBuilder; + } + + /** + * This method is to check all the services health status, and Gateway service health will be + * only in up health state if and only if all of the core services and dependencies are up + * and running. + * + * @return ReactiveHealthContributor information about all the core microservices. + */ + @Bean(name = "Core Microservices") + ReactiveHealthContributor coreServices() { + + ReactiveHealthIndicator productHealthIndicator = () -> getServicesHealth("http://product"); + ReactiveHealthIndicator recommendationHealthIndicator = () -> getServicesHealth("http://recommendation"); + ReactiveHealthIndicator reviewHealthIndicator = () -> getServicesHealth("http://review"); + ReactiveHealthIndicator storeHealthIndicator = () -> getServicesHealth("http://store"); + + Map allIndicators = + Map.of( + "Product Service", productHealthIndicator, + "Recommendation Service", recommendationHealthIndicator, + "Review Service", reviewHealthIndicator, + "Store Service",storeHealthIndicator); + + return CompositeReactiveHealthContributor.fromMap(allIndicators); + } + + private Mono getServicesHealth(String url) { + url += "/actuator/health"; + log.debug("Will call the Health API on URL: {}", url); + return getWebClient() + .get() + .uri(url) + .retrieve() + .bodyToMono(String.class) + .map(s -> new Health.Builder().up().build()) + .onErrorResume(ex -> Mono.just(new Health.Builder().down(ex).build())) + .log(); + } + + private WebClient getWebClient() { + if (webClient == null) { + webClient = webClientBuilder.build(); + } + return webClient; + } +} diff --git a/store-cloud-infra/edge-server/src/main/resources/application.yml b/store-cloud-infra/edge-server/src/main/resources/application.yml new file mode 100644 index 00000000..e5ad4449 --- /dev/null +++ b/store-cloud-infra/edge-server/src/main/resources/application.yml @@ -0,0 +1,63 @@ +spring: + application.name: gateway + + # As Spring Cloud Ribbon is in maintenance mode. + # It is recommended switching to BlockingLoadBalancerClient instead. + cloud: + loadbalancer.ribbon.enabled: false + gateway.routes: + - id: host_route_200 + uri: http://httpstat.us + predicates: + - Host=i.feel.lucky:8080 + - Path=/headerrouting/** + filters: + - SetPath=/200 + + - id: host_route_418 + uri: http://httpstat.us + predicates: + - Host=im.a.teapot:8080 + - Path=/headerrouting/** + filters: + - SetPath=/418 + + - id: host_route_501 + uri: http://httpstat.us + predicates: + - Path=/headerrouting/** + filters: + - SetPath=/501 + +app.eureka-server: localhost + +eureka: + client: + healthcheck.enabled: true + service-Url.defaultZone: http://${app.eureka-server}:8761/eureka/ + initial-instance-info-replication-interval-seconds: 5 + registry-fetch-interval-seconds: 5 + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + +ribbon: + server-list-refresh-interval: 5000 + NF-load-balancer-ping-interval: 5 + +management: + info.git.enabled: true + endpoint: + health.show-details: "ALWAYS" + endpoints: + web.exposure.include: "*" + +logging.level: + root: INFO + org.springframework.cloud.gateway: TRACE + org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator: INFO + +--- +spring.profiles: docker + +app.eureka-server: eureka diff --git a/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java b/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java new file mode 100644 index 00000000..3e64eee0 --- /dev/null +++ b/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java @@ -0,0 +1,17 @@ +package com.siriusxi.cloud.infra.gateway; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@SpringBootTest( + webEnvironment = RANDOM_PORT, + properties = {"eureka.client.enabled: false"}) +class EdgeServerApplicationTests { + + @Test + void contextLoads() { + assert true; + } +} diff --git a/store-cloud-infra/eureka-server/src/main/resources/application.yml b/store-cloud-infra/eureka-server/src/main/resources/application.yml index d8b853ae..b68f6311 100644 --- a/store-cloud-infra/eureka-server/src/main/resources/application.yml +++ b/store-cloud-infra/eureka-server/src/main/resources/application.yml @@ -1,21 +1,14 @@ spring: - application: - name: eureka-server + application.name: eureka-server # As Spring Cloud Ribbon is in maintenance mode. # It is recommended switching to BlockingLoadBalancerClient instead. - cloud: - loadbalancer: - ribbon: - enabled: false + cloud.loadbalancer.ribbon.enabled: false -server: - port: 8761 +server.port: 8761 -logging: - level: - com: - netflix: +logging.level: + com.netflix: eureka: OFF discovery: OFF @@ -29,8 +22,7 @@ eureka: # for development set it to false in order to not register itself to its peer. Register-with-eureka: false #Do you register yourself with Eureka Server? Fetch-registry: false #Do not get registration information through eureka - service-url: - defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ + service-url.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: # Make the number of renewals required to prevent an emergency tiny (probably 0) renewal-percent-threshold: 0.49 @@ -62,7 +54,5 @@ eureka: wait-time-in-ms-when-sync-empty: 0 management: - endpoints: - web: - exposure: - include: "*" \ No newline at end of file + endpoints.web.exposure.include: "*" + info.git.enabled: true \ No newline at end of file diff --git a/store-services/product-service/src/main/resources/application.yaml b/store-services/product-service/src/main/resources/application.yml similarity index 63% rename from store-services/product-service/src/main/resources/application.yaml rename to store-services/product-service/src/main/resources/application.yml index bfc07dce..7d7150e0 100644 --- a/store-services/product-service/src/main/resources/application.yaml +++ b/store-services/product-service/src/main/resources/application.yml @@ -1,28 +1,27 @@ spring: - application: - name: product + application.name: product data: mongodb: - host: localhost + host: ${app.database.host} port: 27017 database: product-db auto-index-creation: true + rabbitmq: - host: 127.0.0.1 + host: ${app.messaging.rabbitmq.host} port: 5672 username: guest password: guest + cloud: # As Spring Cloud Ribbon is in maintenance mode. # It is recommended switching to BlockingLoadBalancerClient instead. - loadbalancer: - ribbon: - enabled: false + loadbalancer.ribbon.enabled: false + # Event-driven messages Stream config stream: defaultBinder: rabbit - default: - contentType: application/json + default.contentType: application/json bindings: input: destination: products @@ -34,24 +33,20 @@ spring: backOffMultiplier: 2.0 rabbit: bindings: - input: - consumer: + input.consumer: autoBindDlq: true republishToDlq: true kafka: bindings: - input: - consumer: - enableDlq: true + input.consumer.enableDlq: true binder: - brokers: 127.0.0.1 + brokers: ${app.messaging.kafka.broker} defaultBrokerPort: 9092 server: port: 9081 -logging: - level: +logging.level: web: DEBUG root: INFO com.siriusxi.ms.store: DEBUG @@ -60,26 +55,27 @@ logging: mongodb: debug management: - info: - git: + info.git: mode: full - endpoints: - web: - exposure: - include: "*" - endpoint: - shutdown: enabled: true - health: - show-details: always + endpoints.web.exposure.include: "*" + endpoint: + shutdown.enabled: true + health.show-details: always + +app: + eureka-server: localhost + database: + host: localhost + messaging: + rabbitmq.host: 127.0.0.1 + kafka.broker: 127.0.0.1 # Service discovery configs eureka: client: - healthcheck: - enabled: true - service-url: - defaultZone: http://localhost:8761/eureka/ + healthcheck.enabled: true + service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 instance: @@ -92,23 +88,14 @@ eureka: --- spring: profiles: docker - jmx: - enabled: false - data: - mongodb: - host: mongodb - rabbitmq: - host: rabbitmq - cloud: - stream: - kafka: - binder: - brokers: kafka + jmx.enabled: false -server: - port: 8080 +server.port: 8080 -eureka: - client: - service-url: - defaultZone: http://eureka:8761/eureka/ +app: + eureka-server: eureka + database: + host: mongodb + messaging: + rabbitmq.host: rabbitmq + kafka.broker: kafka diff --git a/store-services/recommendation-service/src/main/resources/application.yaml b/store-services/recommendation-service/src/main/resources/application.yml similarity index 60% rename from store-services/recommendation-service/src/main/resources/application.yaml rename to store-services/recommendation-service/src/main/resources/application.yml index 59b053b3..a9019a81 100644 --- a/store-services/recommendation-service/src/main/resources/application.yaml +++ b/store-services/recommendation-service/src/main/resources/application.yml @@ -1,28 +1,28 @@ spring: - application: - name: recommendation + application.name: recommendation + data: mongodb: - host: localhost + host: ${app.database.host} port: 27017 database: recommendation-db auto-index-creation: true + rabbitmq: - host: 127.0.0.1 + host: ${app.messaging.rabbitmq.host} port: 5672 username: guest password: guest + cloud: # As Spring Cloud Ribbon is in maintenance mode. # It is recommended switching to BlockingLoadBalancerClient instead. - loadbalancer: - ribbon: - enabled: false + loadbalancer.ribbon.enabled: false + # Event-driven messages Stream config stream: defaultBinder: rabbit - default: - contentType: application/json + default.contentType: application/json bindings: input: destination: recommendations @@ -33,25 +33,19 @@ spring: backOffMaxInterval: 1000 backOffMultiplier: 2.0 rabbit: - bindings: - input: - consumer: - autoBindDlq: true - republishToDlq: true + bindings.input.consumer: + autoBindDlq: true + republishToDlq: true kafka: - bindings: - input: - consumer: - enableDlq: true + bindings.input.consumer.enableDlq: true binder: - brokers: 127.0.0.1 + brokers: ${app.messaging.kafka.broker} defaultBrokerPort: 9092 server: port: 9082 -logging: - level: +logging.level: web: DEBUG root: INFO com.siriusxi.ms.store: DEBUG @@ -60,26 +54,27 @@ logging: mongodb: debug management: - info: - git: + info.git: mode: full - endpoints: - web: - exposure: - include: "*" - endpoint: - shutdown: enabled: true - health: - show-details: always + endpoints.web.exposure.include: "*" + endpoint: + shutdown.enabled: true + health.show-details: always + +app: + eureka-server: localhost + database: + host: localhost + messaging: + rabbitmq.host: 127.0.0.1 + kafka.broker: 127.0.0.1 # Service discovery configs eureka: client: - healthcheck: - enabled: true - service-url: - defaultZone: http://localhost:8761/eureka/ + healthcheck.enabled: true + service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 instance: @@ -92,23 +87,15 @@ eureka: --- spring: profiles: docker - jmx: - enabled: false - data: - mongodb: - host: mongodb - rabbitmq: - host: rabbitmq - cloud: - stream: - kafka: - binder: - brokers: kafka + jmx.enabled: false server: port: 8080 -eureka: - client: - service-url: - defaultZone: http://eureka:8761/eureka/ +app: + eureka-server: eureka + database: + host: mongodb + messaging: + rabbitmq.host: rabbitmq + kafka.broker: kafka diff --git a/store-services/review-service/src/main/resources/application.yaml b/store-services/review-service/src/main/resources/application.yaml index 23c19ae9..2f075ef7 100644 --- a/store-services/review-service/src/main/resources/application.yaml +++ b/store-services/review-service/src/main/resources/application.yaml @@ -1,54 +1,46 @@ spring: - application: - name: review + application.name: review jpa: show-sql: true open-in-view: false database: MYSQL - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL8Dialect - hibernate: + properties.hibernate.dialect: org.hibernate.dialect.MySQL8Dialect # Strongly recommend to set this property to "none" or with flyway to "validate" in a # production environment! - ddl-auto: none + hibernate.ddl-auto: none datasource: ## You often do not need to specify the driver-class-name, ## since Spring Boot can deduce it for most databases from the url. #driver-class-name: com.mysql.cj.jdbc.Driver platform: mysql - url: "jdbc:mysql://localhost/review-db?useSSL=false&serverTimezone=UTC" + url: "jdbc:mysql://${app.database.host}/review-db?useSSL=false&serverTimezone=UTC" username: user password: pwd hikari: - initializationFailTimeout: 60000 + initialization-fail-timeout: 60000 connection-test-query: SELECT 1 maximum-pool-size: 10 flyway: #Enable or disable flyway migrations enabled: true - url: "jdbc:mysql://localhost/mysql?useSSL=false&serverTimezone=UTC" + url: "jdbc:mysql://${app.database.host}/${app.database.schema}?useSSL=false&serverTimezone=UTC" schemas: review-db user: ${spring.datasource.username} password: ${spring.datasource.password} rabbitmq: - host: 127.0.0.1 + host: ${app.messaging.rabbitmq.host} port: 5672 username: guest password: guest cloud: # As Spring Cloud Ribbon is in maintenance mode. # It is recommended switching to BlockingLoadBalancerClient instead. - loadbalancer: - ribbon: - enabled: false + loadbalancer.ribbon.enabled: false # Event-driven messages Stream config stream: defaultBinder: rabbit - default: - contentType: application/json - bindings: - input: + default.contentType: application/json + bindings.input: destination: reviews group: reviewsGroup consumer: @@ -56,25 +48,27 @@ spring: backOffInitialInterval: 500 backOffMaxInterval: 1000 backOffMultiplier: 2.0 - rabbit: - bindings: - input: - consumer: - autoBindDlq: true - republishToDlq: true + rabbit.bindings.input.consumer: + autoBindDlq: true + republishToDlq: true kafka: - bindings: - input: - consumer: - enableDlq: true + bindings.input.consumer.enableDlq: true binder: - brokers: 127.0.0.1 + brokers: ${app.messaging.kafka.broker} defaultBrokerPort: 9092 -server: - port: 9083 -logging: - level: +app: + eureka-server: localhost + database: + host: localhost + schema: mysql + messaging: + rabbitmq.host: 127.0.0.1 + kafka.broker: 127.0.0.1 + +server.port: 9083 + +logging.level: web: DEBUG root: INFO com.siriusxi.ms.store: DEBUG @@ -84,26 +78,19 @@ logging: type.descriptor.sql.BasicBinder: TRACE management: - info: - git: - mode: full - endpoints: - web: - exposure: - include: "*" + info.git: + mode: full + enabled: true + endpoints.web.exposure.include: "*" endpoint: - shutdown: - enabled: true - health: - show-details: always + shutdown.enabled: true + health.show-details: always # Service discovery configs eureka: client: - healthcheck: - enabled: true - service-url: - defaultZone: http://localhost:8761/eureka/ + healthcheck.enabled: true + service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 instance: @@ -116,25 +103,17 @@ eureka: --- spring: profiles: docker - jmx: - enabled: false + jmx.enabled: false datasource: - url: "jdbc:mysql://mysql/review-db" + url: "jdbc:mysql://${app.database.host}/${app.database.schema}" - flyway: - url: "jdbc:mysql://mysql/review-db?useSSL=false&serverTimezone=UTC" - rabbitmq: - host: rabbitmq - cloud: - stream: - kafka: - binder: - brokers: kafka +server.port: 8080 -server: - port: 8080 - -eureka: - client: - service-url: - defaultZone: http://eureka:8761/eureka/ \ No newline at end of file +app: + eureka-server: eureka + database: + host: mysql + schema: review-db + messaging: + rabbitmq.host: rabbitmq + kafka.broker: kafka \ No newline at end of file diff --git a/store-services/review-service/src/test/resources/application-test.yaml b/store-services/review-service/src/test/resources/application-test.yml similarity index 100% rename from store-services/review-service/src/test/resources/application-test.yaml rename to store-services/review-service/src/test/resources/application-test.yml diff --git a/store-services/store-service/src/main/resources/application.yaml b/store-services/store-service/src/main/resources/application.yml similarity index 80% rename from store-services/store-service/src/main/resources/application.yaml rename to store-services/store-service/src/main/resources/application.yml index cac83bb9..73f3ec03 100644 --- a/store-services/store-service/src/main/resources/application.yaml +++ b/store-services/store-service/src/main/resources/application.yml @@ -1,31 +1,27 @@ +# Server configs +server.port: 9080 + spring: - application: - name: store-service + application.name: store cloud: # As Spring Cloud Ribbon is in maintenance mode. # It is recommended switching to BlockingLoadBalancerClient instead. - loadbalancer: - ribbon: - enabled: false + loadbalancer.ribbon.enabled: false # Massaging provider configurations ## Event-driven messages Stream config stream: defaultBinder: rabbit - default: - contentType: application/json + default.contentType: application/json bindings: output-products: destination: products - producer: - required-groups: auditGroup + producer.required-groups: auditGroup output-recommendations: destination: recommendations - producer: - required-groups: auditGroup + producer.required-groups: auditGroup output-reviews: destination: reviews - producer: - required-groups: auditGroup + producer.required-groups: auditGroup kafka: binder: brokers: 127.0.0.1 @@ -39,22 +35,17 @@ spring: # Service discovery configs eureka: client: - healthcheck: - enabled: true - service-url: - defaultZone: http://localhost:8761/eureka/ + healthcheck.enabled: true + service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 instance: lease-renewal-interval-in-seconds: 5 lease-expiration-duration-in-seconds: 5 -ribbon.server-list-refresh-interval: 5000 -ribbon.NFLoadBalancerPingInterval: 5 - -# Server configs -server: - port: 9080 +ribbon: + server-list-refresh-interval: 5000 + NF-load-balancer-ping-interval: 5 # Logging configs logging: @@ -65,27 +56,20 @@ logging: # Application health and information management management: - info: - git: - enabled: true - endpoints: - web: - exposure: - include: "*" + info.git: + enabled: true + mode: full + endpoints.web.exposure.include: "*" endpoint: - shutdown: - enabled: true - health: - show-details: "ALWAYS" + shutdown.enabled: true + health.show-details: "ALWAYS" # Custom configurations app: - product-service: - host: product - recommendation-service: - host: recommendation - review-service: - host: review + eureka-server: localhost + product-service.host: product + recommendation-service.host: recommendation + review-service.host: review # Swagger properties api: @@ -149,10 +133,8 @@ api: --- spring: profiles: docker - jmx: - enabled: false - rabbitmq: - host: rabbitmq + jmx.enabled: false + rabbitmq.host: rabbitmq cloud: stream: kafka: @@ -162,7 +144,5 @@ spring: server: port: 8080 -eureka: - client: - service-url: - defaultZone: http://eureka:8761/eureka/ \ No newline at end of file +app: + eureka-server: eureka \ No newline at end of file From 1ae5da4c3b55620e84c2f322ccc36a9916fb9ac7 Mon Sep 17 00:00:00 2001 From: Mohamed Taman Date: Thu, 30 Apr 2020 14:29:38 +0200 Subject: [PATCH 5/5] Configuring API gateway - All test cases runs for the whole system. - test-em-all runs successfully. - More reduction application.yml properties --- docker-compose-kafka.yml | 8 +-- docker-compose-partitions.yml | 6 +- docker-compose.yml | 6 +- .../src/main/resources/application.yml | 47 +++++++++------- .../gateway/EdgeServerApplicationTests.java | 4 +- .../src/main/resources/application.yml | 4 +- .../src/main/resources/application.yml | 11 +++- .../src/main/resources/application.yml | 11 +++- .../src/main/resources/application.yaml | 11 +++- .../ms/store/pcs/StoreServiceApplication.java | 6 -- .../pcs/config/StoreServiceConfiguration.java | 44 +++------------ .../pcs/integration/StoreIntegration.java | 56 ++++++------------- .../src/main/resources/application.yml | 11 +++- 13 files changed, 97 insertions(+), 128 deletions(-) diff --git a/docker-compose-kafka.yml b/docker-compose-kafka.yml index ef9923f1..52d25104 100644 --- a/docker-compose-kafka.yml +++ b/docker-compose-kafka.yml @@ -94,8 +94,6 @@ services: ## Start - Store service definition store: build: store-services/store-service - ports: - - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker - MANAGEMENT_HEALTH_RABBIT_ENABLED=false @@ -115,9 +113,7 @@ services: ## Start - Eureka Service Discovery definition eureka: build: store-cloud-infra/eureka-server - ports: - - "8761:8761" - restart: always + restart: on-failure ## End - Eureka Service Discovery definition ## Start - Edge Server definition @@ -127,6 +123,8 @@ services: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker + depends_on: + - eureka restart: on-failure ## End - Edge Server definition # End - Cloud Infrastructure diff --git a/docker-compose-partitions.yml b/docker-compose-partitions.yml index 4df9d44f..9331392f 100644 --- a/docker-compose-partitions.yml +++ b/docker-compose-partitions.yml @@ -82,8 +82,6 @@ services: ## Start - Store service definition store: build: store-services/store-service - ports: - - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker - SPRING_CLOUD_STREAM_BINDINGS_OUTPUT-PRODUCTS_PRODUCER_PARTITION-KEY-EXPRESSION=payload.key @@ -101,8 +99,6 @@ services: ## Start - Eureka Service Discovery definition eureka: build: store-cloud-infra/eureka-server - ports: - - "8761:8761" restart: always ## End - Eureka Service Discovery definition @@ -113,6 +109,8 @@ services: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker + depends_on: + - eureka restart: on-failure ## End - Edge Server definition # End - Cloud Infrastructure diff --git a/docker-compose.yml b/docker-compose.yml index ca8d629a..276bb222 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,8 +36,6 @@ services: ## Start - Store service definition store: build: store-services/store-service - ports: - - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker depends_on: @@ -49,8 +47,6 @@ services: ## Start - Eureka Service Discovery definition eureka: build: store-cloud-infra/eureka-server - ports: - - "8761:8761" restart: on-failure ## End - Eureka Service Discovery definition @@ -61,6 +57,8 @@ services: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker + depends_on: + - eureka restart: on-failure ## End - Edge Server definition # End - Cloud Infrastructure diff --git a/store-cloud-infra/edge-server/src/main/resources/application.yml b/store-cloud-infra/edge-server/src/main/resources/application.yml index e5ad4449..505c8972 100644 --- a/store-cloud-infra/edge-server/src/main/resources/application.yml +++ b/store-cloud-infra/edge-server/src/main/resources/application.yml @@ -5,41 +5,46 @@ spring: # It is recommended switching to BlockingLoadBalancerClient instead. cloud: loadbalancer.ribbon.enabled: false + # Route definitions of the system gateway.routes: - - id: host_route_200 - uri: http://httpstat.us + - id: store-products + # lb:// is used to direct Spring Cloud Gateway to use the client-side load balancer + # to look up the destination in the discovery service. + uri: lb://store predicates: - - Host=i.feel.lucky:8080 - - Path=/headerrouting/** - filters: - - SetPath=/200 + - Path=/store/** - - id: host_route_418 - uri: http://httpstat.us + - id: eureka-api + uri: http://${app.eureka-server}:8761 predicates: - - Host=im.a.teapot:8080 - - Path=/headerrouting/** + - Path=/eureka/api/{segment} filters: - - SetPath=/418 + - SetPath=/eureka/{segment} - - id: host_route_501 - uri: http://httpstat.us + - id: eureka-web-start + uri: http://${app.eureka-server}:8761 predicates: - - Path=/headerrouting/** + - Path=/eureka/web filters: - - SetPath=/501 + - SetPath=/ + + - id: eureka-web-other + uri: http://${app.eureka-server}:8761 + predicates: + - Path=/eureka/** app.eureka-server: localhost eureka: + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + prefer-ip-address: true client: healthcheck.enabled: true service-Url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 - instance: - lease-renewal-interval-in-seconds: 5 - lease-expiration-duration-in-seconds: 5 ribbon: server-list-refresh-interval: 5000 @@ -60,4 +65,8 @@ logging.level: --- spring.profiles: docker -app.eureka-server: eureka +eureka: + instance: + prefer-ip-address: false + +app.eureka-server: eureka \ No newline at end of file diff --git a/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java b/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java index 3e64eee0..86476d80 100644 --- a/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java +++ b/store-cloud-infra/edge-server/src/test/java/com/siriusxi/cloud/infra/gateway/EdgeServerApplicationTests.java @@ -3,15 +3,17 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @SpringBootTest( webEnvironment = RANDOM_PORT, properties = {"eureka.client.enabled: false"}) +// TODO add test cases https://spring.io/guides/gs/gateway/ class EdgeServerApplicationTests { @Test void contextLoads() { - assert true; + assertTrue(true); } } diff --git a/store-cloud-infra/eureka-server/src/main/resources/application.yml b/store-cloud-infra/eureka-server/src/main/resources/application.yml index b68f6311..028e16ae 100644 --- a/store-cloud-infra/eureka-server/src/main/resources/application.yml +++ b/store-cloud-infra/eureka-server/src/main/resources/application.yml @@ -9,8 +9,8 @@ server.port: 8761 logging.level: com.netflix: - eureka: OFF - discovery: OFF + eureka: debug + discovery: debug eureka: environment: Development diff --git a/store-services/product-service/src/main/resources/application.yml b/store-services/product-service/src/main/resources/application.yml index 7d7150e0..f08d3a24 100644 --- a/store-services/product-service/src/main/resources/application.yml +++ b/store-services/product-service/src/main/resources/application.yml @@ -73,14 +73,15 @@ app: # Service discovery configs eureka: + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + prefer-ip-address: true client: healthcheck.enabled: true service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 - instance: - lease-renewal-interval-in-seconds: 5 - lease-expiration-duration-in-seconds: 5 # This is a docker specific profile properties # Also profiles could be separated in its owen file @@ -92,6 +93,10 @@ spring: server.port: 8080 +eureka: + instance: + prefer-ip-address: false + app: eureka-server: eureka database: diff --git a/store-services/recommendation-service/src/main/resources/application.yml b/store-services/recommendation-service/src/main/resources/application.yml index a9019a81..6eca9745 100644 --- a/store-services/recommendation-service/src/main/resources/application.yml +++ b/store-services/recommendation-service/src/main/resources/application.yml @@ -72,14 +72,15 @@ app: # Service discovery configs eureka: + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + prefer-ip-address: true client: healthcheck.enabled: true service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 - instance: - lease-renewal-interval-in-seconds: 5 - lease-expiration-duration-in-seconds: 5 # This is a docker specific profile properties # Also profiles could be separated in its owen file @@ -92,6 +93,10 @@ spring: server: port: 8080 +eureka: + instance: + prefer-ip-address: false + app: eureka-server: eureka database: diff --git a/store-services/review-service/src/main/resources/application.yaml b/store-services/review-service/src/main/resources/application.yaml index 2f075ef7..7f42d6f7 100644 --- a/store-services/review-service/src/main/resources/application.yaml +++ b/store-services/review-service/src/main/resources/application.yaml @@ -88,14 +88,15 @@ management: # Service discovery configs eureka: + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + prefer-ip-address: true client: healthcheck.enabled: true service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 - instance: - lease-renewal-interval-in-seconds: 5 - lease-expiration-duration-in-seconds: 5 # This is a docker specific profile properties # Also profiles could be separated in its owen file @@ -109,6 +110,10 @@ spring: server.port: 8080 +eureka: + instance: + prefer-ip-address: false + app: eureka-server: eureka database: diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java index c2cd537d..af1679b4 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java @@ -15,10 +15,4 @@ public class StoreServiceApplication { public static void main(String[] args) { SpringApplication.run(StoreServiceApplication.class, args); } - - @Bean - @LoadBalanced - public WebClient.Builder loadBalancedWebClientBuilder() { - return WebClient.builder(); - } } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java index cc9fd00d..15992f29 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/config/StoreServiceConfiguration.java @@ -1,20 +1,15 @@ package com.siriusxi.ms.store.pcs.config; -import com.siriusxi.ms.store.pcs.integration.StoreIntegration; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.actuate.health.CompositeReactiveHealthContributor; -import org.springframework.boot.actuate.health.ReactiveHealthContributor; -import org.springframework.boot.actuate.health.ReactiveHealthIndicator; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spring.web.plugins.Docket; -import java.util.Map; - import static java.util.Collections.emptyList; import static org.springframework.web.bind.annotation.RequestMethod.*; import static springfox.documentation.builders.RequestHandlerSelectors.basePackage; @@ -23,8 +18,6 @@ @Configuration public class StoreServiceConfiguration { - private final StoreIntegration integration; - @Value("${api.common.version}") private String apiVersion; @@ -52,33 +45,6 @@ public class StoreServiceConfiguration { @Value("${api.common.contact.email}") private String apiContactEmail; - @Autowired - public StoreServiceConfiguration(StoreIntegration integration) { - this.integration = integration; - } - - /** - * This method is to check all the services health status, and store service health will be only - * in up health state if and only if all of the core services and dependencies are up and running. - * - * @return ReactiveHealthContributor information about all the core microservices. - */ - @Bean(name = "Core Microservices") - ReactiveHealthContributor coreServices() { - - ReactiveHealthIndicator productHealthIndicator = integration::getProductHealth; - ReactiveHealthIndicator recommendationHealthIndicator = integration::getRecommendationHealth; - ReactiveHealthIndicator reviewHealthIndicator = integration::getReviewHealth; - - Map allIndicators = - Map.of( - "Product Service", productHealthIndicator, - "Recommendation Service", recommendationHealthIndicator, - "Review Service", reviewHealthIndicator); - - return CompositeReactiveHealthContributor.fromMap(allIndicators); - } - /** * Will exposed on $HOST:$PORT/swagger-ui.html * @@ -120,4 +86,10 @@ Using the globalResponseMessage() method, we ask SpringFox not to add any defaul apiLicenseUrl, emptyList())); } + + @Bean + @LoadBalanced + public WebClient.Builder loadBalancedWebClientBuilder() { + return WebClient.builder(); + } } diff --git a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java index b5d1ca18..d42d467a 100644 --- a/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java +++ b/store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/integration/StoreIntegration.java @@ -14,7 +14,6 @@ import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.actuate.health.Health; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.annotation.Output; import org.springframework.messaging.MessageChannel; @@ -38,30 +37,14 @@ @Log4j2 public class StoreIntegration implements ProductService, RecommendationService, ReviewService { - public interface MessageSources { - - String OUTPUT_PRODUCTS = "output-products"; - String OUTPUT_RECOMMENDATIONS = "output-recommendations"; - String OUTPUT_REVIEWS = "output-reviews"; - - @Output(OUTPUT_PRODUCTS) - MessageChannel outputProducts(); - - @Output(OUTPUT_RECOMMENDATIONS) - MessageChannel outputRecommendations(); - - @Output(OUTPUT_REVIEWS) - MessageChannel outputReviews(); - } - private final String PRODUCT_ID_QUERY_PARAM = "?productId="; private final WebClient.Builder webClientBuilder; - private WebClient webClient; private final ObjectMapper mapper; private final MessageSources messageSources; private final String productServiceUrl; private final String recommendationServiceUrl; private final String reviewServiceUrl; + private WebClient webClient; @Autowired public StoreIntegration( @@ -195,18 +178,6 @@ public void deleteReviews(int productId) { .send(withPayload(new Event<>(DELETE, productId, null)).build()); } - public Mono getProductHealth() { - return getHealth(productServiceUrl); - } - - public Mono getRecommendationHealth() { - return getHealth(recommendationServiceUrl); - } - - public Mono getReviewHealth() { - return getHealth(reviewServiceUrl); - } - private WebClient getWebClient() { if (webClient == null) { webClient = webClientBuilder.build(); @@ -214,15 +185,6 @@ private WebClient getWebClient() { return webClient; } - private Mono getHealth(String url) { - url += "/actuator/health"; - log.debug("Will call the Health API on URL: {}", url); - return getWebClient().get().uri(url).retrieve().bodyToMono(String.class) - .map(s -> new Health.Builder().up().build()) - .onErrorResume(ex -> Mono.just(new Health.Builder().down(ex).build())) - .log(); - } - private Throwable handleException(Throwable ex) { if (!(ex instanceof WebClientResponseException wcre)) { log.warn("Got a unexpected error: {}, will rethrow it", ex.toString()); @@ -246,4 +208,20 @@ private String getErrorMessage(WebClientResponseException ex) { return ex.getMessage(); } } + + public interface MessageSources { + + String OUTPUT_PRODUCTS = "output-products"; + String OUTPUT_RECOMMENDATIONS = "output-recommendations"; + String OUTPUT_REVIEWS = "output-reviews"; + + @Output(OUTPUT_PRODUCTS) + MessageChannel outputProducts(); + + @Output(OUTPUT_RECOMMENDATIONS) + MessageChannel outputRecommendations(); + + @Output(OUTPUT_REVIEWS) + MessageChannel outputReviews(); + } } diff --git a/store-services/store-service/src/main/resources/application.yml b/store-services/store-service/src/main/resources/application.yml index 73f3ec03..3e13552c 100644 --- a/store-services/store-service/src/main/resources/application.yml +++ b/store-services/store-service/src/main/resources/application.yml @@ -34,14 +34,15 @@ spring: # Service discovery configs eureka: + instance: + lease-renewal-interval-in-seconds: 5 + lease-expiration-duration-in-seconds: 5 + prefer-ip-address: true client: healthcheck.enabled: true service-url.defaultZone: http://${app.eureka-server}:8761/eureka/ initial-instance-info-replication-interval-seconds: 5 registry-fetch-interval-seconds: 5 - instance: - lease-renewal-interval-in-seconds: 5 - lease-expiration-duration-in-seconds: 5 ribbon: server-list-refresh-interval: 5000 @@ -141,6 +142,10 @@ spring: binder: brokers: kafka +eureka: + instance: + prefer-ip-address: false + server: port: 8080