Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbc92577

Browse files
committed
update
1 parent2b46978 commitbc92577

File tree

18 files changed

+552
-4
lines changed

18 files changed

+552
-4
lines changed

‎README.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,16 @@ Spring Cloud Tutorial 是一本关于 Spring Cloud 学习的开源书。利用
1818
* Spring Boot Data Redis Starter 2.0.0.M3
1919
* Redis 3.2.100
2020
* Spring Cloud Netflix Eureka Server Finchley.M2
21+
* Spring Cloud Netflix Eureka Client Finchley.M2
22+
* Spring Cloud Starter OpenFeig Finchley.M2
2123

2224
##Get Started 如何开始阅读
2325

2426
选择下面入口之一:
2527

2628
*<https://github.com/waylau/spring-cloud-tutorial/>[SUMMARY.md](SUMMARY.md)(源码)
2729
*<http://waylau.gitbooks.io/spring-cloud-tutorial/> 点击 Read 按钮(同步更新,国内访问速度一般)
30+
*<http://git.oschina.net/waylau/spring-cloud-tutorial>[SUMMARY.md](SUMMARY.md)(码云,手动同步,有所延时)
2831

2932
##Code 源码
3033

‎SUMMARY.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*[实现服务的注册与发现](docs/register-discover/eureka-in-action.md)(完)
1818
*[微服务的消费](docs/comsumer/comsumer.md)
1919
*[微服务的消费模式](docs/comsumer/comsumer-patterns.md)
20-
*[常见微服务的消费者](docs/comsumer/comsumer-cases.md)
20+
*[常见微服务的消费者](docs/comsumer/comsumer-cases.md)(完)
2121
*[实现服务的消费者](docs/comsumer/comsumer-in-action.md)
2222
*[实现服务的负载均衡及高可用](docs/comsumer/ribbon-in-action.md)
2323
*[API 网关](docs/api-gateway/api-gateway.md)
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,118 @@
11
#实现服务的消费者
22

3+
本章节,我们将创建一个`micro-weather-feign` 作为服务器的消费者,并演示如何使用 Feign 来消费服务。
4+
5+
`micro-weather-eureka-client` 的基础上稍作修改即可
6+
7+
##开发环境
8+
9+
* Gradle 4.0
10+
* Spring Boot 2.0.0.M3
11+
* Spring Cloud Netflix Eureka Client Finchley.M2
12+
* Spring Cloud Starter OpenFeig Finchley.M2
13+
14+
##更改配置
15+
16+
增加如下配置:
17+
18+
```groovy
19+
dependencies {
20+
//...
21+
22+
compile('org.springframework.cloud:spring-cloud-starter-openfeign')
23+
24+
//...
25+
}
26+
```
27+
28+
##声明式 REST 客户端——Feign
29+
30+
Feign 是一个声明式的 Web 服务客户端。这使得Web服务客户端的写入更加方便。它具有可插拔注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并且使用了在Spring Web中默认使用的相同的HttpMessageConverter。 在使用Feign时,Spring Cloud集成了Ribbon和Eureka来提供负载平衡的http客户端。
31+
32+
##一个最简单的 Feign
33+
34+
主应用:
35+
36+
```java
37+
@SpringBootApplication
38+
@EnableDiscoveryClient
39+
@EnableFeignClients
40+
publicclassApplication {
41+
42+
publicstaticvoidmain(String[]args) {
43+
SpringApplication.run(Application.class, args);
44+
}
45+
46+
}
47+
```
48+
49+
编写 Feign 请求接口:
50+
51+
```java
52+
packagecom.waylau.spring.cloud.service;
53+
54+
importorg.springframework.cloud.netflix.feign.FeignClient;
55+
importorg.springframework.web.bind.annotation.RequestMapping;
56+
importorg.springframework.web.bind.annotation.RequestMethod;
57+
58+
/**
59+
* Hello Client
60+
*
61+
*@since 1.0.0 2017年9月17日
62+
*@author <ahref="https://waylau.com">Way Lau</a>
63+
*/
64+
@FeignClient("micro-weather-eureka-client")
65+
publicinterfaceHelloClient {
66+
@RequestMapping(method=RequestMethod.GET,value="/hello")
67+
StringgetHello();
68+
}
69+
```
70+
71+
其中:`@FeignClient`指定了要访问的服务的名称“micro-weather-eureka-client”。
72+
73+
项目配置:
74+
75+
```
76+
spring.application.name: micro-weather-feign
77+
78+
eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
79+
80+
feign.client.config.feignName.connectTimeout: 5000
81+
feign.client.config.feignName.readTimeout: 5000
82+
```
83+
84+
85+
##如何测试
86+
87+
编写测试用例:
88+
89+
```java
90+
@RunWith(SpringRunner.class)
91+
@SpringBootTest
92+
publicclassHelloClientTest {
93+
94+
@Autowired
95+
privateHelloClient helloClient;
96+
97+
@Test
98+
publicvoidtestHello() {
99+
String hello= helloClient.getHello();
100+
System.out.println(hello);
101+
}
102+
103+
}
104+
```
105+
106+
启动在之前章节中搭建的`micro-weather-eureka-server``micro-weather-eureka-client` 两个项目。这样,`micro-weather-eureka-client`服务,就能被`micro-weather-feign` 发现,并进行访问。
107+
108+
109+
启动测试用例,如果一切正常,可以在控制台看到“Hello world”字样。这个就是请求`micro-weather-eureka-client` 服务时响应的内容。
110+
111+
如果同时也启动了`micro-weather-feign` 项目,则能在
112+
启动在之前章节中搭建的`micro-weather-eureka-server` 管理界面,看到这个服务的信息。
113+
114+
![micro-weather-feign](../../images/comsumer/comsumer-eureka.jpg)
115+
116+
##源码
117+
118+
本章节源码,见`micro-weather-feign`

‎docs/register-discover/eureka-in-action.md‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies {
3232
@RestController
3333
publicclassApplication {
3434

35-
@RequestMapping("/")
35+
@RequestMapping("/hello")
3636
publicStringhome() {
3737
return"Hello world";
3838
}
@@ -53,7 +53,15 @@ eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
5353

5454
##运行
5555

56-
分别在 8081 和 8082 上启动了客户端示例。可以在 Eureka Server 上看到这两个实体的信息。
56+
分别在 8081 和 8082 上启动了客户端示例。
57+
58+
```java
59+
java-jar micro-weather-eureka-client-1.0.0.jar--server.port=8081
60+
61+
java-jar micro-weather-eureka-client-1.0.0.jar--server.port=8082
62+
```
63+
64+
可以在 Eureka Server 上看到这两个实体的信息。
5765

5866
![eurake-client](../../images/register-discover/eurake-client.jpg)
5967

79.9 KB
Loading

‎samples/micro-weather-eureka-client/src/main/java/com/waylau/spring/cloud/Application.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@RestController
1212
publicclassApplication {
1313

14-
@RequestMapping("/")
14+
@RequestMapping("/hello")
1515
publicStringhome() {
1616
return"Hello world";
1717
}
-55.4 KB
Binary file not shown.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
.gradle
2+
/build/
3+
!gradle/wrapper/gradle-wrapper.jar
4+
5+
### STS ###
6+
.apt_generated
7+
.classpath
8+
.factorypath
9+
.project
10+
.settings
11+
.springBeans
12+
13+
### IntelliJ IDEA ###
14+
.idea
15+
*.iws
16+
*.iml
17+
*.ipr
18+
19+
### NetBeans ###
20+
nbproject/private/
21+
build/
22+
nbbuild/
23+
dist/
24+
nbdist/
25+
.nb-gradle/
26+
/bin/
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
buildscript {
2+
ext {
3+
springBootVersion='2.0.0.M3'
4+
}
5+
repositories {
6+
//mavenCentral()
7+
maven { url"https://repo.spring.io/snapshot" }
8+
maven { url"https://repo.spring.io/milestone" }
9+
maven { url"http://maven.aliyun.com/nexus/content/groups/public/" }
10+
}
11+
dependencies {
12+
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
13+
}
14+
}
15+
16+
applyplugin:'java'
17+
applyplugin:'eclipse'
18+
applyplugin:'org.springframework.boot'
19+
applyplugin:'io.spring.dependency-management'
20+
21+
version='1.0.0'
22+
sourceCompatibility=1.8
23+
24+
repositories {
25+
//mavenCentral()
26+
maven { url"https://repo.spring.io/snapshot" }
27+
maven { url"https://repo.spring.io/milestone" }
28+
maven { url"http://maven.aliyun.com/nexus/content/groups/public/" }
29+
}
30+
31+
ext {
32+
springCloudVersion='Finchley.M2'
33+
}
34+
35+
dependencies {
36+
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
37+
compile('org.springframework.cloud:spring-cloud-starter-openfeign')
38+
testCompile('org.springframework.boot:spring-boot-starter-test')
39+
}
40+
41+
dependencyManagement {
42+
imports {
43+
mavenBom"org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
44+
}
45+
}
46+
53.4 KB
Binary file not shown.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp