<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                上一篇文章我們介紹了eureka服務注冊中心的搭建,這篇文章介紹一下如何使用eureka服務注冊中心,搭建一個簡單的服務端注冊服務,客戶端去調用服務使用的案例。 案例中有三個角色:服務注冊中心、服務提供者、服務消費者,其中服務注冊中心就是我們上一篇的eureka單機版啟動既可,流程是首先啟動注冊中心,服務提供者生產服務并注冊到服務中心中,消費者從服務中心中獲取服務并執行。 # 服務提供 ***** 我們假設服務提供者有一個hello方法,可以根據傳入的參數,提供輸出“hello xxx,this is first messge”的服務 ## 1、pom包配置 創建一個springboot項目,pom.xml中添加如下配置: ``` <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> ``` ## 2、配置文件 application.properties配置如下: ``` spring.application.name=spring-cloud-producer server.port=9000 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ ``` 參數在上一篇都已經解釋過,這里不多說。 ## 3、啟動類 啟動類中添加@EnableDiscoveryClient注解 ``` @SpringBootApplication @EnableDiscoveryClient public class ProducerApplication { public static void main(String[] args) { SpringApplication.run(ProducerApplication.class, args); } } ``` ## 4、controller 提供hello服務 ``` @RestController public class HelloController { @RequestMapping("/hello") public String index(@RequestParam String name) { return "hello "+name+",this is first messge"; } } ``` 添加@EnableDiscoveryClient注解后,項目就具有了服務注冊的功能。啟動工程后,就可以在注冊中心的頁面看到SPRING-CLOUD-PRODUCER服務。 ![](https://box.kancloud.cn/39de8357d56f71e018505fa4d5fa22b7_2500x938.png) 到此服務提供者配置就完成了。 # 服務調用 ***** ## 1、pom包配置 和服務提供者一致 ``` <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> ``` ## 2、配置文件 application.properties配置如下: ``` spring.application.name=spring-cloud-consumer server.port=9001 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ ``` ## 3、啟動類 啟動類添加@EnableDiscoveryClient和@EnableFeignClients注解。 ``` @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } } ``` * @EnableDiscoveryClient :啟用服務注冊與發現 * @EnableFeignClients:啟用feign進行遠程調用 Feign是一個聲明式Web Service客戶端。使用Feign能讓編寫Web Service客戶端更加簡單, 它的使用方法是定義一個接口,然后在上面添加注解,同時也支持JAX-RS標準的注解。Feign也支持可拔插式的編碼器和解碼器。Spring Cloud對Feign進行了封裝,使其支持了Spring MVC標準注解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負載均衡。 ## 4、feign調用實現 ``` @FeignClient(name= "spring-cloud-producer") public interface HelloRemote { @RequestMapping(value = "/hello") public String hello(@RequestParam(value = "name") String name); } ``` name:遠程服務名,及spring.application.name配置的名稱 此類中的方法和遠程服務中contoller中的方法名和參數需保持一致。 ## 5、web層調用遠程服務 將HelloRemote注入到controller層,像普通方法一樣去調用即可。 ``` @RestController public class ConsumerController { @Autowired HelloRemote HelloRemote; @RequestMapping("/hello/{name}") public String index(@PathVariable("name") String name) { return HelloRemote.hello(name); } } ``` 到此,最簡單的一個服務注冊與調用的例子就完成了。 # 測試 ***** ## 簡單調用 依次啟動spring-cloud-eureka、spring-cloud-producer、spring-cloud-consumer三個項目 先輸入:http://localhost:9000/hello?name=neo 檢查spring-cloud-producer服務是否正常 返回:hello neo,this is first messge 說明spring-cloud-producer正常啟動,提供的服務也正常。 瀏覽器中輸入:http://localhost:9001/hello/neo 返回:hello neo,this is first messge 說明客戶端已經成功的通過feign調用了遠程服務hello,并且將結果返回到了瀏覽器。 ## ## 負載均衡 以上面spring-cloud-producer為例子修改,將其中的controller改動如下: ``` @RestController public class HelloController { @RequestMapping("/hello") public String index(@RequestParam String name) { return "hello "+name+",this is producer 2 send first messge"; } } ``` 在配置文件中改動端口: ``` spring.application.name=spring-cloud-producer server.port=9003 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ ``` 打包啟動后,在eureka就會發現兩個服務提供者,如下圖: ![](https://box.kancloud.cn/eb02455e8bf793540fa035d7f904116a_2514x1032.png) 然后在瀏覽器再次輸入:http://localhost:9001/hello/neo 進行測試: 第一次返回結果:hello neo,this is first messge 第二次返回結果:hello neo,this is producer 2 send first messge 不斷的進行測試下去會發現兩種結果交替出現,說明兩個服務中心自動提供了服務均衡負載的功能。如果我們將服務提供者的數量在提高為N個,測試結果一樣,請求會自動輪詢到每個服務端來處理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看