From 275b7e3f1bb742fa21e20bc6c82b4fd53bd970d2 Mon Sep 17 00:00:00 2001 From: ityouknow Date: Mon, 15 May 2017 17:08:51 +0800 Subject: [PATCH] m --- README.md | 2 + .../spring-cloud-consumer/pom.xml | 70 +++++++++++++++++++ .../java/com/neo/ConsumerApplication.java | 20 ++++++ .../neo/controller/ConsumerController.java | 20 ++++++ .../main/java/com/neo/remote/HelloRemote.java | 16 +++++ .../com/neo/remote/HelloRemoteHystrix.java | 17 +++++ .../src/main/resources/application.properties | 5 ++ .../com/neo/ProducerApplicationTests.java | 16 +++++ .../spring-cloud-eureka/pom.xml | 66 +++++++++++++++++ .../com/neo/SpringCloudEurekaApplication.java | 14 ++++ .../src/main/resources/application.properties | 8 +++ .../SpringCloudEurekaApplicationTests.java | 16 +++++ .../spring-cloud-producer/pom.xml | 66 +++++++++++++++++ .../java/com/neo/ProducerApplication.java | 14 ++++ .../com/neo/controller/HelloController.java | 14 ++++ .../src/main/resources/application.properties | 4 ++ .../com/neo/ProducerApplicationTests.java | 16 +++++ 17 files changed, 384 insertions(+) create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/pom.xml create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/ConsumerApplication.java create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/controller/ConsumerController.java create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemote.java create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemoteHystrix.java create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/main/resources/application.properties create mode 100644 spring-cloud-hystrix/spring-cloud-consumer/src/test/java/com/neo/ProducerApplicationTests.java create mode 100644 spring-cloud-hystrix/spring-cloud-eureka/pom.xml create mode 100644 spring-cloud-hystrix/spring-cloud-eureka/src/main/java/com/neo/SpringCloudEurekaApplication.java create mode 100644 spring-cloud-hystrix/spring-cloud-eureka/src/main/resources/application.properties create mode 100644 spring-cloud-hystrix/spring-cloud-eureka/src/test/java/com/neo/SpringCloudEurekaApplicationTests.java create mode 100644 spring-cloud-hystrix/spring-cloud-producer/pom.xml create mode 100644 spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/ProducerApplication.java create mode 100644 spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/controller/HelloController.java create mode 100644 spring-cloud-hystrix/spring-cloud-producer/src/main/resources/application.properties create mode 100644 spring-cloud-hystrix/spring-cloud-producer/src/test/java/com/neo/ProducerApplicationTests.java diff --git a/README.md b/README.md index 8d0820c..173cbda 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Spring cloud使用的各种示例,以最简单、最实用为标准 - [spring-cloud-eureka](https://github.com/ityouknow/spring-cloud-starter/tree/master/spring-cloud-eureka):eureka server单机、双机、集群示例 - [service-producer-consumer](https://github.com/ityouknow/spring-cloud-starter/tree/master/service-producer-consumer):利用eureka实现服务提供与调用demo +- [spring-cloud-hystrix](https://github.com/ityouknow/spring-cloud-starter/tree/master/spring-cloud-hystrix):Hystrix熔断的使用 @@ -15,6 +16,7 @@ Spring cloud使用的各种示例,以最简单、最实用为标准 - [springcloud(一):大话Spring Cloud](http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html) - [springcloud(二):注册中心Eureka](http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html) - [springcloud(三):服务提供与调用](http://www.ityouknow.com/springcloud/2017/05/12/service-provider-constomer.html) +- [springcloud(四):熔断器Hystrix](http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html) > 如果大家想了解关于springbcloud的其它方面应用,也可以以issues的形式反馈给我,我后续来完善。 diff --git a/spring-cloud-hystrix/spring-cloud-consumer/pom.xml b/spring-cloud-hystrix/spring-cloud-consumer/pom.xml new file mode 100644 index 0000000..4752a64 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + com.neo + spring-cloud-consumer + 0.0.1-SNAPSHOT + jar + + spring-cloud-consumer + Demo project for Spring cloud consumer + + + org.springframework.boot + spring-boot-starter-parent + 1.5.3.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Dalston.RELEASE + + + + + org.springframework.cloud + spring-cloud-starter-feign + + + 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 + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/ConsumerApplication.java b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/ConsumerApplication.java new file mode 100644 index 0000000..41a3da9 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/ConsumerApplication.java @@ -0,0 +1,20 @@ +package com.neo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.netflix.feign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ConsumerApplication { + + public static void main(String[] args) { + SpringApplication.run(ConsumerApplication.class, args); + } + + + +} diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/controller/ConsumerController.java b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/controller/ConsumerController.java new file mode 100644 index 0000000..6b4b2dc --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/controller/ConsumerController.java @@ -0,0 +1,20 @@ +package com.neo.controller; + +import com.neo.remote.HelloRemote; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class ConsumerController { + + @Autowired + HelloRemote HelloRemote; + + @RequestMapping("/hello/{name}") + public String index(@PathVariable("name") String name) { + return HelloRemote.hello(name); + } + +} \ No newline at end of file diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemote.java b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemote.java new file mode 100644 index 0000000..3d64410 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemote.java @@ -0,0 +1,16 @@ +package com.neo.remote; + +import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by summer on 2017/5/11. + */ +@FeignClient(name= "spring-cloud-producer", fallback = HelloRemoteHystrix.class) +public interface HelloRemote { + + @RequestMapping(value = "/hello") + public String hello(@RequestParam(value = "name") String name); + +} diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemoteHystrix.java b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemoteHystrix.java new file mode 100644 index 0000000..973a4f3 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/main/java/com/neo/remote/HelloRemoteHystrix.java @@ -0,0 +1,17 @@ +package com.neo.remote; + +import com.neo.remote.HelloRemote; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by summer on 2017/5/15. + */ +@Component +public class HelloRemoteHystrix implements HelloRemote{ + + @Override + public String hello(@RequestParam(value = "name") String name) { + return "hello " +name+", this messge send failed "; + } +} diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/main/resources/application.properties b/spring-cloud-hystrix/spring-cloud-consumer/src/main/resources/application.properties new file mode 100644 index 0000000..921b77b --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/main/resources/application.properties @@ -0,0 +1,5 @@ +spring.application.name=spring-cloud-consumer +server.port=9001 +feign.hystrix.enabled=true +eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ + diff --git a/spring-cloud-hystrix/spring-cloud-consumer/src/test/java/com/neo/ProducerApplicationTests.java b/spring-cloud-hystrix/spring-cloud-consumer/src/test/java/com/neo/ProducerApplicationTests.java new file mode 100644 index 0000000..677161e --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-consumer/src/test/java/com/neo/ProducerApplicationTests.java @@ -0,0 +1,16 @@ +package com.neo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProducerApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud-hystrix/spring-cloud-eureka/pom.xml b/spring-cloud-hystrix/spring-cloud-eureka/pom.xml new file mode 100644 index 0000000..23d7a60 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-eureka/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + com.neo + spring-cloud-eureka + 0.0.1-SNAPSHOT + jar + + spring-cloud-eureka + Demo project for Spring cloud eureka + + + org.springframework.boot + spring-boot-starter-parent + 1.5.3.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Dalston.RELEASE + + + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-starter-eureka-server + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-cloud-hystrix/spring-cloud-eureka/src/main/java/com/neo/SpringCloudEurekaApplication.java b/spring-cloud-hystrix/spring-cloud-eureka/src/main/java/com/neo/SpringCloudEurekaApplication.java new file mode 100644 index 0000000..5d47795 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-eureka/src/main/java/com/neo/SpringCloudEurekaApplication.java @@ -0,0 +1,14 @@ +package com.neo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +@SpringBootApplication +@EnableEurekaServer +public class SpringCloudEurekaApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringCloudEurekaApplication.class, args); + } +} diff --git a/spring-cloud-hystrix/spring-cloud-eureka/src/main/resources/application.properties b/spring-cloud-hystrix/spring-cloud-eureka/src/main/resources/application.properties new file mode 100644 index 0000000..124b09d --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-eureka/src/main/resources/application.properties @@ -0,0 +1,8 @@ +spring.application.name=spring-cloud-eureka + +server.port=8000 +eureka.client.register-with-eureka=false +eureka.client.fetch-registry=false + +eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ + diff --git a/spring-cloud-hystrix/spring-cloud-eureka/src/test/java/com/neo/SpringCloudEurekaApplicationTests.java b/spring-cloud-hystrix/spring-cloud-eureka/src/test/java/com/neo/SpringCloudEurekaApplicationTests.java new file mode 100644 index 0000000..d536a6b --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-eureka/src/test/java/com/neo/SpringCloudEurekaApplicationTests.java @@ -0,0 +1,16 @@ +package com.neo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class SpringCloudEurekaApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud-hystrix/spring-cloud-producer/pom.xml b/spring-cloud-hystrix/spring-cloud-producer/pom.xml new file mode 100644 index 0000000..be43088 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-producer/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + com.neo + spring-cloud-producer + 0.0.1-SNAPSHOT + jar + + spring-cloud-producer + Demo project for Spring cloud producer + + + org.springframework.boot + spring-boot-starter-parent + 1.5.3.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Dalston.RELEASE + + + + + 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 + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/ProducerApplication.java b/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/ProducerApplication.java new file mode 100644 index 0000000..d6275cd --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/ProducerApplication.java @@ -0,0 +1,14 @@ +package com.neo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class ProducerApplication { + + public static void main(String[] args) { + SpringApplication.run(ProducerApplication.class, args); + } +} diff --git a/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/controller/HelloController.java b/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/controller/HelloController.java new file mode 100644 index 0000000..ba93702 --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-producer/src/main/java/com/neo/controller/HelloController.java @@ -0,0 +1,14 @@ +package com.neo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + @RequestMapping("/hello") + public String index(@RequestParam String name) { + return "hello "+name+",this is first messge"; + } +} \ No newline at end of file diff --git a/spring-cloud-hystrix/spring-cloud-producer/src/main/resources/application.properties b/spring-cloud-hystrix/spring-cloud-producer/src/main/resources/application.properties new file mode 100644 index 0000000..7994abc --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-producer/src/main/resources/application.properties @@ -0,0 +1,4 @@ +spring.application.name=spring-cloud-producer +server.port=9000 +eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ + diff --git a/spring-cloud-hystrix/spring-cloud-producer/src/test/java/com/neo/ProducerApplicationTests.java b/spring-cloud-hystrix/spring-cloud-producer/src/test/java/com/neo/ProducerApplicationTests.java new file mode 100644 index 0000000..677161e --- /dev/null +++ b/spring-cloud-hystrix/spring-cloud-producer/src/test/java/com/neo/ProducerApplicationTests.java @@ -0,0 +1,16 @@ +package com.neo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProducerApplicationTests { + + @Test + public void contextLoads() { + } + +}