Springcloud通過ribbon負載均衡調用其他服務接口示例

各個章節可能有關聯關係,查找《SpringCloud實戰教程》其他章節請參考:

http://www.yayihouse.com/yayishuwu/book/79


 

 

6. Springcloud通過ribbon負載均衡調用其他服務接口示例教程

 

(0) 在前面章節《idea創建springcloud服務提供者工程euraka-client》所創建的項目中添加以下服務接口給ribbon客戶端消費調用。

@RequestMapping("/getPort")

    @ResponseBody

   public  String getPort(HttpServletRequest request){

        return  "服務的端口:"+request.getServerPort();

    }

 

 

(1) 右鍵剛剛創建好的工程--》New--》Module--》Spring Initializr--》next--》修改一下Group爲com.wlg.springcloud和Artifact爲eureka-client-ribbon--》next--》Spring Cloud Routing--》勾選Ribbon(Maintenance) --》 next--》Finish。

(2) 啓動類上加上@EnableDiscoveryClient註解

@SpringBootApplication

@EnableDiscoveryClient

public class EurekaClientRibbonApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaClientRibbonApplication.class, args);

}

@Bean

@LoadBalanced

public RestTemplate restTemplate(){

        return  new RestTemplate();

}

}

 

 

(3) 把application.properties改爲application.yml,內容如下:

server:

 port: 9904

spring:

 application:

   name: service-four

eureka:

 client:

   serviceUrl:

     defaultZone: http://localhost:9901/eureka/

 instance:

   prefer-ip-address: true

 

 

(4) pom.xml文件:

<?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"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
     <groupId>com.wlg.springcloud</groupId>
     <artifactId>springcloud</artifactId>
     <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.wlg.springcloud</groupId>
  <artifactId>eureka-client-ribbon</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>eureka-client-ribbon</name>
  <description>Demo project for Spring Boot</description>
  <dependencies>
     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
     </dependency>

     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     </dependency>
  </dependencies>
</project>

 

 

 

 

(5) Ribbon通過restTemplate調用服務的代碼:

@RestController

public class RibbonClientController {

   @Autowired

   RestTemplate restTemplate;

 

    @RequestMapping("/getPort")

   public  void getPort(HttpServletResponse response) throws IOException {

        final String result = restTemplate.getForObject("http://SERVICE-ONE/getPort", String.class);

        response.setCharacterEncoding("utf-8");

        response.setContentType("text/html; charset=utf-8");

        PrintWriter writer = response.getWriter();

        writer.print(result);

        writer.flush();

        writer.close();

    }

 

}

 

 

 

(6) 測試要結合前面幾章來聯合測試,分別啓動註冊中心eureka-server、eureka-client(端口分別修改爲9902和9903並分別啓動)和現在的eureka-client-ribbon,瀏覽器訪問註冊中心服務:http://localhost:9901/就可以看到服務提供者service-one(兩個端口兩個服務)和service-four已經註冊到註冊中心了。

 

在瀏覽器地址欄輸入:http://localhost:9904/getPort

瀏覽器就會顯示不同結果:

有時是:服務的端口:9903   有時是:服務的端口:9902

這個就說明ribbon通過輪詢的方式調用註冊中心中其他服務接口成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章