From abc4a044ef8aca21bfeb208fbc4d69e2c86f36ae Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Mon, 10 Feb 2020 00:04:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20spring=20cloud=20openfeign?= =?UTF-8?q?=20=E5=85=A5=E9=97=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- .../labx-03-sc-feign-demo01-consumer/pom.xml | 70 +++++++++++++++++++ .../consumer/DemoConsumerApplication.java | 41 +++++++++++ .../feign/DemoProviderFeignClient.java | 13 ++++ .../src/main/resources/application.yaml | 11 +++ .../labx-03-sc-feign-demo01-provider/pom.xml | 64 +++++++++++++++++ .../provider/DemoProviderApplication.java | 39 +++++++++++ .../src/main/resources/application.yaml | 12 ++++ labx-03/pom.xml | 19 +++++ pom.xml | 1 + 10 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 labx-03/labx-03-sc-feign-demo01-consumer/pom.xml create mode 100644 labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/DemoConsumerApplication.java create mode 100644 labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/feign/DemoProviderFeignClient.java create mode 100644 labx-03/labx-03-sc-feign-demo01-consumer/src/main/resources/application.yaml create mode 100644 labx-03/labx-03-sc-feign-demo01-provider/pom.xml create mode 100644 labx-03/labx-03-sc-feign-demo01-provider/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/provider/DemoProviderApplication.java create mode 100644 labx-03/labx-03-sc-feign-demo01-provider/src/main/resources/application.yaml create mode 100644 labx-03/pom.xml diff --git a/README.md b/README.md index cf164c66..53f3f265 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ * [《芋道 Spring Cloud Alibaba 注册中心 Nacos 入门》](http://www.iocoder.cn/Spring-Cloud-Alibaba/Nacos-Discovery/?github) 对应 [labx-01](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-01) * [《芋道 Spring Cloud Netflix 负载均衡 Ribbon 入门》](http://www.iocoder.cn/Spring-Cloud-Netflix/Ribbon/?github) 对应 [labx-02](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-02) -* 《芋道 Spring Cloud 声明式调用 OpenFeign 入门》 +* [《芋道 Spring Cloud 声明式调用 OpenFeign 入门》](http://www.iocoder.cn/Spring-Cloud/OpenFeign/?github) 对应 [labx-03](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-03) * 《芋道 Spring Cloud Alibaba 服务调用 Dubbo 入门》 * 《芋道 Spring Cloud Alibaba 配置中心 Nacos 入门》 * 《芋道 Spring Cloud Alibaba 服务容错 Sentinel 入门》 @@ -146,7 +146,7 @@ * 《芋道 Spring Cloud Alibaba 服务调用 Dubbo 入门》 * [《芋道 Spring Cloud Netflix 负载均衡 Ribbon 入门》](http://www.iocoder.cn/Spring-Cloud-Netflix/Ribbon/?github) 对应 [labx-02](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-02) -* 《芋道 Spring Cloud 声明式调用 OpenFeign 入门》 +* [《芋道 Spring Cloud 声明式调用 OpenFeign 入门》](http://www.iocoder.cn/Spring-Cloud/OpenFeign/?github) 对应 [labx-03](https://github.com/YunaiV/SpringBoot-Labs/tree/master/labx-03) ## 服务容错 diff --git a/labx-03/labx-03-sc-feign-demo01-consumer/pom.xml b/labx-03/labx-03-sc-feign-demo01-consumer/pom.xml new file mode 100644 index 00000000..1697d651 --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-consumer/pom.xml @@ -0,0 +1,70 @@ + + + + labx-01 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-03-sc-feign-demo01-consumer + + + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + diff --git a/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/DemoConsumerApplication.java b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/DemoConsumerApplication.java new file mode 100644 index 00000000..64a562c1 --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/DemoConsumerApplication.java @@ -0,0 +1,41 @@ +package cn.iocoder.springcloud.labx03.feigndemo.consumer; + +import cn.iocoder.springcloud.labx03.feigndemo.consumer.feign.DemoProviderFeignClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +public class DemoConsumerApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoConsumerApplication.class, args); + } + + @Configuration + @EnableFeignClients + public class OpenFeignConfiguration { + + } + + @RestController + static class TestController { + + @Autowired + private DemoProviderFeignClient demoProviderFeignClient; + + @GetMapping("/hello02") + public String hello02(String name) { + // TODO 直接使用 RestTemplate 调用服务 `demo-provider` + String response = demoProviderFeignClient.echo(name); + // 返回结果 + return "consumer:" + response; + } + + } + +} diff --git a/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/feign/DemoProviderFeignClient.java b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/feign/DemoProviderFeignClient.java new file mode 100644 index 00000000..588cfff2 --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/consumer/feign/DemoProviderFeignClient.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloud.labx03.feigndemo.consumer.feign; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(name = "demo-provider") +public interface DemoProviderFeignClient { + + @GetMapping("/echo") + String echo(@RequestParam("name") String name); + +} diff --git a/labx-03/labx-03-sc-feign-demo01-consumer/src/main/resources/application.yaml b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/resources/application.yaml new file mode 100644 index 00000000..98cac55e --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-consumer/src/main/resources/application.yaml @@ -0,0 +1,11 @@ +spring: + application: + name: demo-consumer # Spring 应用名 + cloud: + nacos: + # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类 + discovery: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + +server: + port: 28080 # 服务器端口。默认为 8080 diff --git a/labx-03/labx-03-sc-feign-demo01-provider/pom.xml b/labx-03/labx-03-sc-feign-demo01-provider/pom.xml new file mode 100644 index 00000000..85d180c0 --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-provider/pom.xml @@ -0,0 +1,64 @@ + + + + labx-01 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-03-sc-feign-demo01-provider + + + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + diff --git a/labx-03/labx-03-sc-feign-demo01-provider/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/provider/DemoProviderApplication.java b/labx-03/labx-03-sc-feign-demo01-provider/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/provider/DemoProviderApplication.java new file mode 100644 index 00000000..113819fe --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-provider/src/main/java/cn/iocoder/springcloud/labx03/feigndemo/provider/DemoProviderApplication.java @@ -0,0 +1,39 @@ +package cn.iocoder.springcloud.labx03.feigndemo.provider; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +public class DemoProviderApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoProviderApplication.class, args); + } + + @RestController + static class TestController { + + private Logger logger = LoggerFactory.getLogger(TestController.class); + + @Value("${server.port}") + private Integer serverPort; + + @GetMapping("/echo") + public String echo(String name) throws InterruptedException { + // 模拟执行 100ms 时长。方便后续我们测试请求超时 +// Thread.sleep(100L); + + // 记录被调用的日志 + logger.info("[echo][被调用啦 name({})]", name); + + return serverPort + "-provider:" + name; + } + + } + +} diff --git a/labx-03/labx-03-sc-feign-demo01-provider/src/main/resources/application.yaml b/labx-03/labx-03-sc-feign-demo01-provider/src/main/resources/application.yaml new file mode 100644 index 00000000..53225aa4 --- /dev/null +++ b/labx-03/labx-03-sc-feign-demo01-provider/src/main/resources/application.yaml @@ -0,0 +1,12 @@ +spring: + application: + name: demo-provider # Spring 应用名 + cloud: + nacos: + # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类 + discovery: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + +server: + port: ${random.int[10000,19999]} # 服务器端口。默认为 8080 +# port: 18080 # 服务器端口。默认为 8080 diff --git a/labx-03/pom.xml b/labx-03/pom.xml new file mode 100644 index 00000000..2b059275 --- /dev/null +++ b/labx-03/pom.xml @@ -0,0 +1,19 @@ + + + + labs-parent + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-03 + + + labx-03-sc-feign-demo01-provider + labx-03-sc-feign-demo01-consumer + + + diff --git a/pom.xml b/pom.xml index b76a850f..0e935b69 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,7 @@ lab-49 labx-01 labx-02 + labx-03