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("시스템이 혼잡합니다!! 잠시후 다시 호출해주세요");
+ }
}