話很少說仍是先附上大佬博客:https://blog.csdn.net/springcyb/article/details/89147639java
這一次咱們來記錄一下消費者的使用,上面這個博客對於新手來講我以爲不是特別的好,由於按上面操做會遇到不少坑,博主的博客沒有問題可是有一些內容沒寫清楚,要是新手本身腦補會沒法調試web
1.繼續在上一次的項目中建立一個spring initialzr項目,起名爲spring_ribbonspring
2.配置端口app
server: port: 8021 spring: application: name: springcloud-myribbon eureka: client: service-url: defaultZone: http://localhost:8000/eureka
3.修改主java文件負載均衡
在工程的啓動類中,經過@EnableDiscoveryClient向服務中心註冊;而且向程序的ioc注入一個bean: restTemplate;並經過@LoadBalanced註解代表這個restRemplate開啓負載均衡的功能ide
package com.example.springcloud_myribbon; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @EnableEurekaClient @SpringBootApplication public class SpringcloudMyribbonApplication { public static void main(String[] args) { SpringApplication.run(SpringcloudMyribbonApplication.class, args); } // 將RestTemplate注入到spring容器中 // LoadBalanced負載均衡默認爲輪詢 // 經過注入在controller中就可使用調用生產者實例 @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } }
3.消費者調用生產者測試
在以前的生產者springcloud-provider操做,創建一個UserController類,必定要看下面的目錄結構這個很重要,很重要,很重要url
UserController類所在的包和SpringcloudProviderApplication放在同一個目錄下,SpringcloudProviderApplication在運行時只會配置本身子目錄下的文件spa
代碼以下.net
package com.example.springcloudprovider.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class UserController { /** * 測試 * * @return */ @GetMapping("testPro") @ResponseBody public String test() { System.out.println("ribbon調用生產者成功"); return "success"; } }
開始操做新建的spring_ribbon
一樣新建一個UserController,目錄結構參考上面的,記住目錄結構很重要,代碼以下
package com.example.springcloud_myribbon.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class UserController { @Autowired private RestTemplate restTemplate; /** * 調用生產者 */ //調用請求 //get 查 //Post 增 //delete 刪 //put 改 @GetMapping("testPro") public String select(){ String result = restTemplate.getForObject("http://SPRINGCLOUD-USER-REG/testPro",String.class); return result; } }
4.運行項目,而後打開http://127.0.0.1:8021/testPro出現以下結果
5錯誤總結
若是顯示的是404說明在調用過程當中路徑除了問題,有多是地址寫錯了,也有可能時一些註解的錯誤,把主流程認真核對下
若是是500的問題,我遇到的就是文件目錄結構的問題,必定記住Controller要在SpringcloudProviderApplication的子目錄下