Spring-cloud-eureka用 gradle, spring boot, 搭建服務消費者

3) 實現 EurekaBService.

a) 項目目錄如下:

├── build.gradle├── gradle│ └── wrapper│ ├── gradle-wrapper.jar│ └── gradle-wrapper.properties├── gradlew├── gradlew.bat├── settings.gradle└── src ├── main │ ├── java │ │ └── com │ │ └── simonton │ │ └── eureka │ │ ├── EurekaBApplication.java │ │ ├── config │ │ │ └── EurekaConfig.java │ │ └── controller │ │ └── EurekaBController.java │ └── resources │ └── application.yml └── test └── java

b) EurekaBApplication 代碼如下:

package com.simonton.eureka;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient@SpringBootApplicationpublic class EurekaBApplication {public static void main(String[] args) {SpringApplication.run(EurekaBApplication.class, args);}}

c) EurekaConfig 代碼如下:

/****/package com.simonton.eureka.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;/*** @author simonton**/@Configurationpublic class EurekaConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplage() {return new RestTemplate();}}

@LoadBalanced 是 spring-ribbon工具的核心,負責客戶端請求的 load balance。

d) EurekaBController 代碼如下:

package com.simonton.eureka.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;@RestControllerpublic class EurekaBController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value="/serviceB",method=RequestMethod.GET)public String service() {String serviceA = restTemplate.getForEntity("http://a-service/serviceA", String.class).getBody();return "service B " + serviceA;}@RequestMapping(value="/beforeService",method=RequestMethod.GET)public String beforeService() {String ret = null;restTemplate.getForEntity("http://a-service/print", String.class);ret = this.restTemplate.getForEntity("http://a-service/beforeService", String.class).getBody();return ret;}}

PS:調用方式是http:// + 註冊中心裡的application name + controller裡定義的具體的 requestmapping.

e) application.yml配置如下:

server: port: 7777spring: application: name: serviceBeureka: client: service-url: defaultZone: http://localhost:9999/eureka

最後,Run EurekaBApplication。然後就可以在註冊中心查看到現在的服務註冊情況:

Spring-cloud-eureka用 gradle, spring boot, 搭建服務消費者

tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=2284732365


分享到:


相關文章: