From 1fc884ec9253aa44d7697dbcd636caa50bd6d3cd Mon Sep 17 00:00:00 2001 From: zhaiyongchao Date: Sat, 25 Jun 2016 22:23:49 +0800 Subject: [PATCH] =?UTF-8?q?Spring=20Cloud=E6=9E=84=E5=BB=BA=E5=BE=AE?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=9E=B6=E6=9E=84=EF=BC=88=E4=B8=89=EF=BC=89?= =?UTF-8?q?=E6=96=AD=E8=B7=AF=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Chapter9-1-3/eureka-ribbon/pom.xml | 72 +++++++++++++++++++ .../java/com/didispace/RibbonApplication.java | 26 +++++++ .../com/didispace/service/ComputeService.java | 23 ++++++ .../com/didispace/web/ConsumerController.java | 24 +++++++ 4 files changed, 145 insertions(+) create mode 100644 Chapter9-1-3/eureka-ribbon/pom.xml create mode 100644 Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java create mode 100644 Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java create mode 100644 Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java diff --git a/Chapter9-1-3/eureka-ribbon/pom.xml b/Chapter9-1-3/eureka-ribbon/pom.xml new file mode 100644 index 0000000..f595d54 --- /dev/null +++ b/Chapter9-1-3/eureka-ribbon/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + com.didispace + eureka-ribbon + 1.0.0 + jar + + eureka-ribbon + Spring Cloud project + + + org.springframework.boot + spring-boot-starter-parent + 1.3.5.RELEASE + + + + + UTF-8 + 1.8 + + + + + org.springframework.cloud + spring-cloud-starter-hystrix + + + org.springframework.cloud + spring-cloud-starter-ribbon + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.RELEASE + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java new file mode 100644 index 0000000..6ac542c --- /dev/null +++ b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java @@ -0,0 +1,26 @@ +package com.didispace; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableCircuitBreaker +public class RibbonApplication { + + @Bean + @LoadBalanced + RestTemplate restTemplate() { + return new RestTemplate(); + } + + public static void main(String[] args) { + SpringApplication.run(RibbonApplication.class, args); + } + +} diff --git a/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java new file mode 100644 index 0000000..5766be5 --- /dev/null +++ b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java @@ -0,0 +1,23 @@ +package com.didispace.service; + +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class ComputeService { + + @Autowired + RestTemplate restTemplate; + + @HystrixCommand(fallbackMethod = "addServiceFallback") + public String addService() { + return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody(); + } + + public String addServiceFallback() { + return "error"; + } + +} diff --git a/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java new file mode 100644 index 0000000..276c9a9 --- /dev/null +++ b/Chapter9-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java @@ -0,0 +1,24 @@ +package com.didispace.web; + +import com.didispace.service.ComputeService; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +@RestController +public class ConsumerController { + + @Autowired + private ComputeService computeService; + + @RequestMapping(value = "/add", method = RequestMethod.GET) + public String add() { + return computeService.addService(); + } + +} \ No newline at end of file