miércoles, 3 de julio de 2019

Spring Cloud Netflix, Microservice, Hystrix (Circuit Breaker), java parte 6


https://github.com/jalbertomr/SpringCloudNetflix/commit/7d5c08245d68dc66a1de437271f075ec001c14e5

En esta parte, integraremos el circuit breaker con la librería Hystrix, Se agrega la dependencia maven en el productor

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
       
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>

       
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>


En el controller del Productor, le agregamos la anotación @hystrixCommand con el método que ser[a llamado cuando exista un error en el método normal. En este caso estamos obligado a tener una excepción en el flujo normal para que el hystrix llame una función alterna con una respuesta alterna.

@RestController
public class TestController {

    @RequestMapping(value = "/empleado", method = RequestMethod.GET)
    @HystrixCommand(fallbackMethod = "getDataFallBack")
    public Employee firstPage() {

        System.out.println("Dentro de la primer pagina");
       
        Employee emp = new Employee();
        emp.setName("emp1");
        emp.setDesignation("manager");
        emp.setEmpId("1");
        emp.setSalary(3000);

        //Obligamos un error en el flujo de respuesta
        if (emp.getName().equalsIgnoreCase("emp1"))
            throw new RuntimeException();

       
        return emp;
    }
   
    public Employee getDataFallBack() {
       
        System.out.println("IN fallback");
       
        Employee emp = new Employee();
        emp.setName("fallback-emp1");
        emp.setDesignation("fallback-manager");
        emp.setEmpId("fallback-1");
        emp.setSalary(3000);

        return emp;
    }

Esta sería la respuesta al consumidor en condiciones normales.

Esta sería la respuesta al existir un error en el flujo.




eot

No hay comentarios:

Publicar un comentario