From 9ba8574f8ae2fc2b6e4db79e9cb90a6bf397dc58 Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Sun, 9 Feb 2020 17:17:13 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20spring=20cloud=20netflix?=
=?UTF-8?q?=20ribbon=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
---
.../src/main/resources/application.yaml | 15 ++--
.../pom.xml | 71 +++++++++++++++++++
.../consumer/DemoConsumerApplication.java | 63 ++++++++++++++++
.../src/main/resources/application.yaml | 27 +++++++
labx-02/pom.xml | 3 +-
5 files changed, 170 insertions(+), 9 deletions(-)
create mode 100644 labx-02/labx-02-scn-ribbon-demo06-consumer/pom.xml
create mode 100644 labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/java/cn/iocoder/springcloudnetflix/labx02/ribbondemo/consumer/DemoConsumerApplication.java
create mode 100644 labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/resources/application.yaml
diff --git a/labx-02/labx-02-scn-ribbon-demo05-consumer/src/main/resources/application.yaml b/labx-02/labx-02-scn-ribbon-demo05-consumer/src/main/resources/application.yaml
index 9f5737d1..f9661e27 100644
--- a/labx-02/labx-02-scn-ribbon-demo05-consumer/src/main/resources/application.yaml
+++ b/labx-02/labx-02-scn-ribbon-demo05-consumer/src/main/resources/application.yaml
@@ -6,10 +6,6 @@ spring:
# Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
discovery:
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
- loadbalancer:
- # Spring Cloud Loadbalancer 重启配置,对应 LoadBalancerRetryProperties 配置类
- retry:
- enabled: true # 是否开启重启,默认为 false 关闭重试。
server:
port: 28080 # 服务器端口。默认为 8080
@@ -17,7 +13,10 @@ server:
ribbon:
# okhttp:
# enabled: true # 设置使用 OkHttp,对应 OkHttpRibbonConfiguration 配置类
-# restclient:
-# enabled: true # 设置使用 Jersey Client,对应 RestClientRibbonConfiguration 配置类
- httpclient:
- enabled: true # 设置使用 Apache HttpClient,对应 HttpClientRibbonConfiguration 配置类
+ restclient:
+ enabled: true # 设置使用 Jersey Client,对应 RestClientRibbonConfiguration 配置类
+# httpclient:
+# enabled: true # 设置使用 Apache HttpClient,对应 HttpClientRibbonConfiguration 配置类
+# ConnectTimeout: 1 # 请求的连接超时时间,单位:毫秒。默认为 1000
+# ReadTimeout: 1 # 请求的读取超时时间,单位:毫秒。默认为 1000
+
diff --git a/labx-02/labx-02-scn-ribbon-demo06-consumer/pom.xml b/labx-02/labx-02-scn-ribbon-demo06-consumer/pom.xml
new file mode 100644
index 00000000..eeff3368
--- /dev/null
+++ b/labx-02/labx-02-scn-ribbon-demo06-consumer/pom.xml
@@ -0,0 +1,71 @@
+
+
+
+ labx-01
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-02-scn-ribbon-demo06-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
+
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
+
+
+
+
diff --git a/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/java/cn/iocoder/springcloudnetflix/labx02/ribbondemo/consumer/DemoConsumerApplication.java b/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/java/cn/iocoder/springcloudnetflix/labx02/ribbondemo/consumer/DemoConsumerApplication.java
new file mode 100644
index 00000000..ec59a021
--- /dev/null
+++ b/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/java/cn/iocoder/springcloudnetflix/labx02/ribbondemo/consumer/DemoConsumerApplication.java
@@ -0,0 +1,63 @@
+package cn.iocoder.springcloudnetflix.labx02.ribbondemo.consumer;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+public class DemoConsumerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(DemoConsumerApplication.class, args);
+ }
+
+ @Configuration
+ public class RestTemplateConfiguration {
+
+ @Bean
+ @LoadBalanced
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+ }
+
+ @RestController
+ static class TestController {
+
+ @Autowired
+ private RestTemplate restTemplate;
+ @Autowired
+ private LoadBalancerClient loadBalancerClient;
+
+ @GetMapping("/hello")
+ public String hello(String name) {
+ // 获得服务 `demo-provider` 的一个实例
+ ServiceInstance instance = loadBalancerClient.choose("demo-provider");
+ // 发起调用
+ String targetUrl = instance.getUri() + "/echo?name=" + name;
+ String response = restTemplate.getForObject(targetUrl, String.class);
+ // 返回结果
+ return "consumer:" + response;
+ }
+
+ @GetMapping("/hello02")
+ public String hello02(String name) {
+ // 直接使用 RestTemplate 调用服务 `demo-provider`
+ String targetUrl = "http://demo-provider/echo?name=" + name;
+ String response = restTemplate.getForObject(targetUrl, String.class);
+ // 返回结果
+ return "consumer:" + response;
+ }
+
+ }
+
+}
diff --git a/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/resources/application.yaml b/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/resources/application.yaml
new file mode 100644
index 00000000..97deb03a
--- /dev/null
+++ b/labx-02/labx-02-scn-ribbon-demo06-consumer/src/main/resources/application.yaml
@@ -0,0 +1,27 @@
+spring:
+ application:
+ name: demo-consumer # Spring 应用名
+ cloud:
+ nacos:
+ # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
+ discovery:
+ server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+ loadbalancer:
+ # Spring Cloud Loadbalancer 重启配置,对应 LoadBalancerRetryProperties 配置类
+ retry:
+ enabled: true # 是否开启重启,默认为 false 关闭重试。
+
+server:
+ port: 28080 # 服务器端口。默认为 8080
+
+ribbon:
+ restclient:
+ enabled: true # 设置使用 Jersey Client,对应 RestClientRibbonConfiguration 配置类
+ ConnectTimeout: 1 # 请求的连接超时时间,单位:毫秒。默认为 1000
+ ReadTimeout: 1 # 请求的读取超时时间,单位:毫秒。默认为 1000
+
+user-provider:
+ ribbon:
+ OkToRetryOnAllOperations: true # 是否对所有操作都进行重试,默认为 false。
+ MaxAutoRetries: 1 # 对当前服务的重试次数,默认为 0 次。
+ MaxAutoRetriesNextServer: 2 # 重新选择服务的次数,默认为 1 次。注意,不包含第 1 次哈。
diff --git a/labx-02/pom.xml b/labx-02/pom.xml
index 4e2311df..51e48835 100644
--- a/labx-02/pom.xml
+++ b/labx-02/pom.xml
@@ -22,8 +22,9 @@
labx-02-scn-ribbon-demo04-consumer
-
labx-02-scn-ribbon-demo05-consumer
+
+ labx-02-scn-ribbon-demo06-consumer