From 5a126c4689468f49163404b4bc4aad5677a63e48 Mon Sep 17 00:00:00 2001 From: kimscott Date: Thu, 6 Feb 2020 17:17:15 +0900 Subject: [PATCH] add circuit breaker --- pom.xml | 5 +++++ .../java/com/example/template/Application.java | 4 +++- .../com/example/template/ProductController.java | 6 +++--- src/main/resources/application.yml | 7 +++++-- src/main/resources/static/goods/img/MASK.jpg | Bin 0 -> 4026 bytes 5 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/static/goods/img/MASK.jpg diff --git a/pom.xml b/pom.xml index 69e7877..26559de 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,11 @@ org.springframework.cloud spring-cloud-starter-netflix-hystrix + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix-dashboard + + diff --git a/src/main/java/com/example/template/Application.java b/src/main/java/com/example/template/Application.java index 29b1741..8ddda12 100644 --- a/src/main/java/com/example/template/Application.java +++ b/src/main/java/com/example/template/Application.java @@ -4,12 +4,14 @@ import com.example.template.config.kafka.KafkaProcessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; +import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.context.ApplicationContext; @SpringBootApplication @EnableBinding(KafkaProcessor.class) @EnableCircuitBreaker +@EnableHystrixDashboard public class Application { protected static ApplicationContext applicationContext; @@ -18,7 +20,7 @@ public class Application { ProductRepository productRepository = applicationContext.getBean(ProductRepository.class); // 초기 상품 셋팅 - String[] products = {"TV", "RADIO", "NOTEBOOK", "TABLE", "CLOCK"}; + String[] products = {"TV", "MASK", "NOTEBOOK", "TABLE", "CLOCK"}; int i = 1; for(String p : products){ Product product = new Product(); diff --git a/src/main/java/com/example/template/ProductController.java b/src/main/java/com/example/template/ProductController.java index 43ab6ea..148ce9a 100644 --- a/src/main/java/com/example/template/ProductController.java +++ b/src/main/java/com/example/template/ProductController.java @@ -20,10 +20,10 @@ public class ProductController { private int count = 0; private static final String HOSTNAME = parseContainerIdFromHostname( - System.getenv().getOrDefault("HOSTNAME", "deliveries")); + System.getenv().getOrDefault("HOSTNAME", "products")); static String parseContainerIdFromHostname(String hostname) { - return hostname.replaceAll("deliveries-v\\d+-", ""); + return hostname.replaceAll("products-\\d+-", ""); } @@ -55,7 +55,7 @@ public class ProductController { logger.info(String.format("product start from %s: %d", HOSTNAME, count)); try { - Thread.sleep(500); + Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 50a68d7..5baff2e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,7 +10,6 @@ spring: hibernate: show_sql: true format_sql: true - cloud: stream: kafka: @@ -41,7 +40,11 @@ spring: event-out: destination: eventTopic contentType: application/json - +management: + endpoints: + web: + exposure: + include: hystrix.stream, info, health logging: level: org.hibernate.type: trace diff --git a/src/main/resources/static/goods/img/MASK.jpg b/src/main/resources/static/goods/img/MASK.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4233831af5b85abffc56bf2216b4705b0be7a94 GIT binary patch literal 4026 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