自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Cloud Eureka 入門(mén)之服務(wù)消費(fèi)者詳解

企業(yè)動(dòng)態(tài)
此小章節(jié)介紹了如何 Eureka 作為服務(wù)消費(fèi)者,并向服務(wù)注冊(cè)中心注冊(cè)自己實(shí)例,更重要的是發(fā)現(xiàn)其他服務(wù),并調(diào)用其他服務(wù)。

[[200512]]

本文提綱

1. springcloud-eureka-sample 工程介紹

2. 運(yùn)行 springcloud-eureka-client-customer 服務(wù)消費(fèi)者工程

3. 詳解 springcloud-eureka-client-customer 服務(wù)消費(fèi)者工程

一、springcloud-eureka-sample 工程介紹

還是回到Eureka 集群簡(jiǎn)單架構(gòu)圖:

 

***小節(jié)《Spring Cloud Eureka 入門(mén)之服務(wù)注冊(cè)中心詳解 ...》實(shí)現(xiàn)了 Eureka Server 作為注冊(cè)中心,

第二小節(jié)《Spring Cloud Eureka 入門(mén) (二)服務(wù)提供者詳解》是 Provider Service B 的案例,實(shí)現(xiàn)了 Eureka Cleint 作為服務(wù)提供者,包括其服務(wù)的注冊(cè)和心跳的功能。

本小節(jié),是 Provider Service A 的案例,實(shí)現(xiàn)了 Eureka Cleint 作為服務(wù)消費(fèi)者,包括其服務(wù)的注冊(cè)和心跳的功能,還有其服務(wù)發(fā)現(xiàn)和通過(guò) Ribbon 進(jìn)行服務(wù)調(diào)用的功能。

springcloud-eureka-client-customer 服務(wù)消費(fèi)者工程,他本身也是一個(gè)服務(wù)提供者。即具有服務(wù)提供功能和服務(wù)消費(fèi)功能。下面去運(yùn)行該工程

二、運(yùn)行 springcloud-eureka-client-customer 服務(wù)消費(fèi)者工程

運(yùn)行環(huán)境:JDK 7 或 8,Maven 3.0+

技術(shù)棧:Spring Cloud Dalston.SR1、 spring-cloud-netflix 1.3.1、Spring Boot 1.5.4

自然,我們先得去上一小節(jié)《Spring Cloud Eureka 入門(mén) (一)服務(wù)注冊(cè)中心詳解》 ,把注冊(cè)中心工程啟動(dòng)完畢。

1. git clone 下載工程 springcloud-learning-example

項(xiàng)目地址見(jiàn) GitHub - https://github.com/JeffLi1993/springcloud-learning-example

  1. git clone https://github.com/JeffLi1993/springcloud-learning-example.git 

2. Maven 編譯安裝這個(gè)工程:

  1. cd springcloud-learning-example 
  2. mvn clean install 

3. 運(yùn)行 Eureka 工程 springcloud-eureka-client-customer

啟動(dòng) springcloud-eureka-client-customer 工程啟動(dòng)類(lèi) CustomerApplication,啟動(dòng)服務(wù)注冊(cè)中心工程。

EurekaServerApplication 類(lèi)路徑:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-client-customer/src/main/java/org/spring/springcloud/CustomerApplication.java

控制臺(tái) Console 看到這類(lèi)信息,代表啟動(dòng)成功:

  1. 2017-07-12 18:19:21.725  INFO 11314 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_CUSTOMER-SERVICE/10.18.29.64:customer-service:8081: registering service... 
  2. 2017-07-12 18:19:21.814  INFO 11314 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_CUSTOMER-SERVICE/10.18.29.64:customer-service:8081 - registration status:  
  3. 2042017-07-12 18:19:21.916  INFO 11314 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http) 
  4. 2017-07-12 18:19:21.918  INFO 11314 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8081 
  5. 2017-07-12 18:19:21.925  INFO 11314 --- [           main] o.s.springcloud.CustomerApplication      : Started CustomerApplication in 17.075 seconds (JVM running for 18.141) 

可以看出,注冊(cè)了應(yīng)用名為 CUSTOMER-SERVICE 的應(yīng)用,該服務(wù)提供者的工程端口為 8081

4. 訪問(wèn) Eureka 注冊(cè)中心可視化界面

打開(kāi)瀏覽器,訪問(wèn) http://localhost:8888/ ,如圖所示:

可以看到,服務(wù)提供者向服務(wù)注冊(cè)中心注冊(cè)自己的實(shí)例,展示了應(yīng)用名和端口信息等。

5.訪問(wèn)服務(wù)消費(fèi)者案例

打開(kāi)瀏覽器,訪問(wèn) http://localhost:8081/customer,如圖所示:

可以看出,下面一句消息 Hello,Provider! ,是服務(wù)消費(fèi)者調(diào)用服務(wù)提供者獲取的信息。

三、詳解 springcloud-eureka-client-customer 服務(wù)消費(fèi)者工程

1.springcloud-eureka-client-customer 工程目錄結(jié)構(gòu)

  1. ├── pom.xml└── src 
  2.     └── main 
  3.         ├── java 
  4.         │   └── org 
  5.         │       └── spring 
  6.         │           ├── springcloud 
  7.         │           │    └──  CustomerApplication.java 
  8.         │           └── web 
  9.         │                └──  CustomerController.java 
  10.         └── resources 
  11.             └── application.yml 

ProviderApplication.java Eureka Discovery Client 啟動(dòng)類(lèi),啟動(dòng)服務(wù)消費(fèi)者工程,本身也會(huì)注冊(cè)到注冊(cè)中心,也能發(fā)現(xiàn)其他服務(wù)。

CustomerController.java 服務(wù)消費(fèi)者 HelloWorld 案例

application.yml 配置文件

2. pom.xml 配置

  1. <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  2.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B 
  3.     <modelVersion>4.0.0</modelVersion>    <groupId>springcloud</groupId>     
  4. <artifactId>springcloud-eureka-client-customer</artifactId>     
  5. <version>0.0.1-SNAPSHOT</version>     
  6. <name>springcloud-eureka-client-customer :: 服務(wù)消費(fèi)者</name>  
  7.  
  8.    <!-- Spring Boot 啟動(dòng)父依賴 --> 
  9.     <parent> 
  10.         <groupId>org.springframework.boot</groupId>         
  11.    <artifactId>spring-boot-starter-parent</artifactId>        
  12.     <version>1.5.4.RELEASE</version>     
  13.     </parent> 
  14.  
  15.  
  16.  
  17.     <dependencies> 
  18.         <!-- Spring Cloud Netflix Eureka 依賴 --> 
  19.         <dependency> 
  20.             <groupId>org.springframework.cloud</groupId>             
  21.    <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency> 
  22.  
  23.  
  24.         <!-- Spring Boot Test 依賴 --> 
  25.         <dependency> 
  26.             <groupId>org.springframework.boot</groupId>  
  27.               <artifactId>spring-boot-starter-test</artifactId>  
  28.               <scope>test</scope>        
  29.                </dependency> 
  30.     </dependencies> 
  31.  
  32.  
  33.     <dependencyManagement> 
  34.         <dependencies> 
  35.                            <!-- Spring Cloud Netflix 依賴 --> 
  36.             <dependency> 
  37.                 <groupId>org.springframework.cloud</groupId>  
  38.                                           
  39.                                          <artifactId>spring-cloud-netflix</artifactId>               
  40.                                            <version>1.3.1.RELEASE</version>               
  41.                                              <type>pom</type> 
  42.                                                              <scope>import</scope>            
  43.                                                               </dependency> 
  44.         </dependencies> 
  45.  
  46.  
  47.     </dependencyManagement> 
  48.     <build> 
  49.         <plugins> 
  50.             <plugin> 
  51.  
  52.  
  53.                 <groupId>org.apache.maven.plugins</groupId>  
  54.                                                                              <artifactId>maven-compiler-plugin</artifactId>              
  55.                                                                                 <configuration> 
  56.  
  57.  
  58.                     <source>1.8</source>     
  59.                                                                                                 <target>1.8</target>   
  60.                                                                                                               </configuration> 
  61.  
  62.  
  63.             </plugin> 
  64.         </plugins> 
  65.     </build></project> 

使用的依賴是

- spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本。

- spring-cloud-starter-eureka Eureka Client 模塊依賴,包含了客戶端 client 的依賴,還有 Ribbon 的依賴,如:org.springframework.cloud:spring-cloud-netflix-eureka-client:1.3.1.RELEASE

org.springframework.cloud:spring-cloud-starter-ribbon:1.3.1.RELEASE

3. application.yml 配置

  1. server: 
  2.   port: 8081 # 服務(wù)端口 
  3.  
  4. eureka: 
  5.   client: 
  6.     service-url: 
  7.       defaultZone: http://localhost:8888/eureka/ # 服務(wù)注冊(cè)中心地址 
  8.  
  9. spring: 
  10.   application: 
  11.     name: customer-service # 服務(wù)名稱(chēng) 
  12.  
  13.  
  14. - server.port 設(shè)置工程服務(wù)端口 
  15. - eureka.client.service-url.defaultZone 設(shè)置服務(wù)注冊(cè)中心地址 

4.服務(wù)消費(fèi)者應(yīng)用啟動(dòng)類(lèi)

  1. /** 
  2.  * Spring Boot Eureka Server 應(yīng)用啟動(dòng)類(lèi) 
  3.  * 
  4.  * Created by bysocket on 21/06/17. 
  5.  */ 
  6.  
  7.   
  8. @EnableDiscoveryClient // Eureka Discovery Client 標(biāo)識(shí) 
  9. @SpringBootApplication // Spring Boot 應(yīng)用標(biāo)識(shí) 
  10.  
  11. public class CustomerApplication {     
  12. @Bean 
  13.     @LoadBalanced 
  14.     RestTemplate restTemplate() {         
  15. return new RestTemplate(); 
  16.     }     
  17.  
  18. public static void main(String args) {         
  19. // 程序啟動(dòng)入口 
  20.          
  21. // 啟動(dòng)嵌入式的 Tomcat 并初始化 Spring 環(huán)境及其各 Spring 組件 
  22.         SpringApplication.run(CustomerApplication.class,args); 
  23.     } 

@EnableDiscoveryClient 標(biāo)志該應(yīng)用作為 Eureka Client ,并會(huì)自動(dòng)化讀取 Eureka 相關(guān)配置。還有向服務(wù)注冊(cè)中心發(fā)現(xiàn)服務(wù)并進(jìn)行調(diào)用。

@LoadBalanced 標(biāo)志著 RestTemplate 是通過(guò) Ribbon 客戶端負(fù)載均衡去調(diào)用服務(wù)提供者集群的。即可以在獲取的服務(wù)提供者實(shí)例列表中,通過(guò) Ribbon 進(jìn)行選擇某實(shí)例,然后調(diào)用該服務(wù)實(shí)例。

6.服務(wù)消費(fèi)者 Hello World 案例

  1. /** 
  2.  * Customer HelloWorld 案例 
  3.  * <p> 
  4.  * Created by bysocket on 06/22/17. 
  5.  */ 
  6.  
  7.   
  8. @RestController 
  9.  
  10. public class CustomerController {     
  11.  
  12. private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class);     
  13.  
  14. @Autowired 
  15.     private RestTemplate restTemplate; // HTTP 訪問(wèn)操作類(lèi) 
  16.  
  17.  
  18.     @RequestMapping("/customer")     
  19.  
  20. public String customer() { 
  21.  
  22.         String providerMsg = restTemplate.getForEntity("http://PROVIDER-SERVICE/provider"
  23.                 String.class).getBody();         
  24.  
  25.          
  26.  
  27.         return "Hello,Customer! msg from provider : <br/><br/> " + providerMsg; 
  28.     } 

可以看到注入了 RestTemplate 對(duì)象,它是 HTTP 訪問(wèn)操作類(lèi)。

然后 customer 方法,通過(guò) restTemplate 通過(guò) HTTP 協(xié)議調(diào)用服務(wù)提供者暴露的 provider 接口,并獲取服務(wù)提供者的結(jié)果。然后組裝輸出。

四、小結(jié)

此小章節(jié)介紹了如何 Eureka 作為服務(wù)消費(fèi)者,并向服務(wù)注冊(cè)中心注冊(cè)自己實(shí)例,更重要的是發(fā)現(xiàn)其他服務(wù),并調(diào)用其他服務(wù)。

【本文為51CTO專(zhuān)欄作者“李強(qiáng)強(qiáng)”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2017-07-11 14:48:33

Spring Clou服務(wù)提供者

2017-07-03 08:29:42

Spring Clou服務(wù)詳解

2022-07-07 09:00:49

RocketMQ消費(fèi)者消息消費(fèi)

2024-07-10 10:51:39

SpringEureka數(shù)據(jù)中心

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2023-06-01 08:08:38

kafka消費(fèi)者分區(qū)策略

2015-08-26 09:39:30

java消費(fèi)者

2022-08-08 10:55:31

5G物聯(lián)網(wǎng)智能手機(jī)

2011-07-22 16:25:38

CA TechnoloIT消費(fèi)化

2011-08-05 16:21:24

2017-06-25 13:33:25

Spring Clou微服務(wù)架構(gòu)

2009-08-13 13:14:31

C#生產(chǎn)者和消費(fèi)者

2021-04-20 08:32:51

消息MQ隊(duì)列

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)

2017-08-09 15:50:47

Spring Clou微服務(wù)架構(gòu)

2021-01-14 07:54:19

Spring Clou應(yīng)用路由

2015-06-15 11:29:34

數(shù)據(jù)中心綠色數(shù)據(jù)中心

2021-12-22 11:00:05

模型Golang語(yǔ)言

2024-09-14 09:21:55

Spring微服務(wù)服務(wù)間調(diào)用

2013-03-15 10:45:42

戴爾服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)