From da89746eeb4f512d0fc94bdbf680c403bc8e2210 Mon Sep 17 00:00:00 2001 From: kimscott Date: Thu, 6 Feb 2020 16:14:27 +0900 Subject: [PATCH] add request response --- azure-pipelines.yml | 16 ++++++++++++++++ cloudbuild.yaml | 2 +- pom.xml | 6 ++++++ .../java/com/example/template/Application.java | 2 ++ .../com/example/template/ProductController.java | 10 ++++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6e3767b..05cc9f0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -118,6 +118,22 @@ stages: image: $(containerRegistry)/$(imageRepository):$(tag) ports: - containerPort: 8080 + readinessProbe: + httpGet: + path: /actuator/health + port: 8080 + initialDelaySeconds: 10 + timeoutSeconds: 2 + periodSeconds: 5 + failureThreshold: 10 + livenessProbe: + httpGet: + path: /products/1 + port: 8080 + initialDelaySeconds: 120 + timeoutSeconds: 2 + periodSeconds: 5 + failureThreshold: 5 secretType: 'dockerRegistry' containerRegistryType: 'Azure Container Registry' - task: Kubernetes@1 diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 9abd4ba..49ed124 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -86,7 +86,7 @@ steps: initialDelaySeconds: 10 timeoutSeconds: 2 periodSeconds: 5 - failureThreshold: 5 + failureThreshold: 10 livenessProbe: httpGet: path: /products/1 diff --git a/pom.xml b/pom.xml index 0686372..69e7877 100644 --- a/pom.xml +++ b/pom.xml @@ -79,6 +79,12 @@ test + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + diff --git a/src/main/java/com/example/template/Application.java b/src/main/java/com/example/template/Application.java index 9ccbcb4..29b1741 100644 --- a/src/main/java/com/example/template/Application.java +++ b/src/main/java/com/example/template/Application.java @@ -3,11 +3,13 @@ package com.example.template; 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.stream.annotation.EnableBinding; import org.springframework.context.ApplicationContext; @SpringBootApplication @EnableBinding(KafkaProcessor.class) +@EnableCircuitBreaker public class Application { protected static ApplicationContext applicationContext; diff --git a/src/main/java/com/example/template/ProductController.java b/src/main/java/com/example/template/ProductController.java index d119ed9..43ab6ea 100644 --- a/src/main/java/com/example/template/ProductController.java +++ b/src/main/java/com/example/template/ProductController.java @@ -1,5 +1,6 @@ package com.example.template; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +48,7 @@ public class ProductController { @PatchMapping("/product/{productId}") + @HystrixCommand(fallbackMethod = "certifyFallBack") ResponseEntity fakeProductPatch(@PathVariable(value = "productId") Long productId, @RequestBody String data) { count++; @@ -60,4 +62,12 @@ public class ProductController { return ResponseEntity.ok(String.format(RESPONSE_STRING_FORMAT, HOSTNAME, count)); } + + ResponseEntity certifyFallBack(Long productId, String data){ + + System.out.println("certifyFallBack"); + System.out.println(data); + + return ResponseEntity.ok("시스템이 혼잡합니다!! 잠시후 다시 호출해주세요"); + } }