Browse Source

Circuit breaker

Daniel Garcia Costa 2 years ago
parent
commit
5c4980a7c0

+ 6 - 0
DBCDS_S11_1_Input/pom.xml

@@ -46,6 +46,12 @@
 		    <groupId>org.springframework.cloud</groupId>
 		    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+			<version>2.1.1.RELEASE</version>
+		</dependency>
 	</dependencies>
 	
 	<dependencyManagement>

+ 8 - 0
DBCDS_S11_1_Input/src/main/java/es/uv/garcosda/input/controllers/InputController.java

@@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.ResourceAccessException;
 import org.springframework.web.client.RestTemplate;
 
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+
 import es.uv.garcosda.shared.domain.Mail;
 import es.uv.garcosda.shared.domain.MailDTO;
 import es.uv.garcosda.shared.domain.User;
@@ -38,6 +40,7 @@ public class InputController {
 	}
 	
 	@GetMapping("{mail}")
+	@HystrixCommand(fallbackMethod="fallbackDataApi")
 	public ResponseEntity<?> getMails(@PathVariable String mail){
 		ResponseEntity<Mail[]> response;
 		List<MailDTO> mailsdto = new ArrayList<MailDTO>(); 
@@ -89,4 +92,9 @@ public class InputController {
 		return new User();
 	}
 	
+	@SuppressWarnings("unused")
+	private ResponseEntity<?> fallbackDataApi() {
+		return new ResponseEntity<String>("Not available at this moment, try again later.", HttpStatus.SERVICE_UNAVAILABLE);
+	}
+	
 }

+ 5 - 0
DBCDS_S11_1_Output/pom.xml

@@ -46,6 +46,11 @@
 		    <groupId>org.springframework.cloud</groupId>
 		    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+			<version>2.1.1.RELEASE</version>
+		</dependency>
 	</dependencies>
 	
 	<dependencyManagement>

+ 8 - 0
DBCDS_S11_1_Output/src/main/java/es/uv/garcosda/output/controllers/OutputController.java

@@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.ResourceAccessException;
 import org.springframework.web.client.RestTemplate;
 
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+
 import es.uv.garcosda.shared.domain.Mail;
 import es.uv.garcosda.shared.domain.User;
 
@@ -31,6 +33,7 @@ public class OutputController {
 	}
 	
 	@PostMapping
+	@HystrixCommand(fallbackMethod="fallbackDataApi")
 	public ResponseEntity<?> sendMail(@RequestBody Mail mail){
 		
 		User from = this.getUser(mail.getFrom());
@@ -67,4 +70,9 @@ public class OutputController {
 		}
 		return new User();
 	}
+	
+	@SuppressWarnings("unused")
+	private ResponseEntity<?> fallbackDataApi() {
+		return new ResponseEntity<String>("Not available at this moment, try again later.", HttpStatus.SERVICE_UNAVAILABLE);
+	}
 }