日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringCloud Ribbon負載均衡代碼實例

瀏覽:120日期:2023-09-16 14:28:47

1.添加依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency><!-- lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency>

2.修改啟動類

import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;@SpringBootApplication@MapperScan('cn.ytheng.order_service')public class OrderServiceApplication { /** * @Loadbalanced負載均衡策略 */ @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); }}

3.添加Controller

import cn.theng.order_service.utils.RibbonUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;import org.springframework.util.LinkedMultiValueMap;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import java.util.HashMap;import java.util.Map;@RestController@RequestMapping('/api/v1/order')public class ProductOrderController { @RequestMapping('/test') public Object test(@RequestParam('product_id') int productId) { //方法一// ServiceInstance instance = loadBalancerClient.choose('product-service');// String url = String.format('http://%s:%s/api/v1/product/find?id=' + productId, instance.getHost(), instance.getPort());// RestTemplate template = new RestTemplate();// Map<String, Object> map2 = template.getForObject(url, Map.class); //負載均衡 //商品列表啟用兩個節點時 //由客戶端來自動選擇節點,可能是8771端口,也有可能是8772端口 //參數id名稱需要保持一致 //方法二(推薦) String uri = 'http://product-service/api/v1/product/find?id={id}'; Map<String, Object> request = new HashMap<>(); request.put('id', productId); Map<String, Object> map3 = RibbonUtils.get(uri, Map.class, request); return 'success'; } @PostMapping('/test2') public Object test2(@RequestParam('product_id') int productId) { Product product = new Product(); product.setId(productId); String uri = 'http://product-service/api/v1/product/find2'; LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); headers.add('token', 'theng'); Object result = RibbonUtils.post(uri, Object.class, product, headers); return 'success'; }}

4.添加Ribbon調用公共類

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.*;import org.springframework.stereotype.Component;import org.springframework.util.LinkedMultiValueMap;import org.springframework.web.client.RestTemplate;import javax.annotation.PostConstruct;import java.util.Arrays;import java.util.Collections;import java.util.Map;@Componentpublic class RibbonUtils { @Autowired private RestTemplate restTemplate; private static RestTemplate template; //@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器調用一次 @PostConstruct public void init() { template = restTemplate; } /** * * @param uri 接口地址 * @param responseType 返回類型 * * */ public static <T> T get(String uri, Class<T> responseType) { return template.getForObject(uri, responseType); } /** * * @param uri 接口地址 * @param responseType 返回類型 * @param request 傳遞參數 * * */ public static <T> T get(String uri, Class<T> responseType, Map<String, ?> request) { return template.getForObject(uri, responseType, request); } /** * * @param uri 接口地址 * @param responseType 返回類型 * @param request 傳遞參數 * @param headerMap 報頭信息 * * */ public static <T> T get(String uri, Class<T> responseType, Map<String, ?> request, Map<String, String> headerMap) { //添加報頭 HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); for(Map.Entry<String, String> entry : headerMap.entrySet()){ String mapKey = entry.getKey(); String mapValue = entry.getValue(); headers.add(mapKey, mapValue); } //body的類型定為String,這里使用get沒有用到body,post會使用到 HttpEntity<String> entity = new HttpEntity<String>(null, headers); ResponseEntity<T> result = template.exchange(uri, HttpMethod.GET, entity, responseType, request); return result.getBody(); } /** * * @param uri 接口地址 * @param responseType 返回類型 * @param body 傳遞實體 * @param headers 報頭信息 * * */ public static <T> T post(String uri, Class<T> responseType, Object body, LinkedMultiValueMap<String, String> headers) { if (!headers.containsKey('Content-Type')) { headers.put('Content-Type', Collections.singletonList('application/json;charset=UTF-8')); } HttpEntity request = new HttpEntity(body, headers); Object obj = template.postForObject(uri, request, responseType); return (T) obj; }}

5.在PostMan上測試兩個接口即可

SpringCloud Ribbon負載均衡代碼實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧洲在线| 亚洲免费专区| 国产精品调教| 精品视频一区二区三区四区五区| 正在播放日韩精品| 亚洲最新av| 国产黄大片在线观看| 国产91精品对白在线播放| 久久福利毛片| www在线观看黄色| 亚洲aa在线| 久久精品影视| 精品视频一区二区三区在线观看 | 国产精品久久久久久久久久妞妞 | av一区二区高清| 青草久久视频| 91久久亚洲| 精品1区2区3区4区| 欧美亚洲免费| 国产精品7m凸凹视频分类| 久久电影tv| 国产理论在线| 欧美精品一二| 欧美一级一区| 99精品在线| 免播放器亚洲| 麻豆国产91在线播放| 色在线视频观看| 丝瓜av网站精品一区二区| 国产日韩亚洲欧美精品| 日本在线精品| 国产亚洲人成a在线v网站| 精品日韩视频| 亚洲精品美女91| 福利欧美精品在线| 亚洲精品网址| 国产高清亚洲| 在线亚洲激情| 国产成人精选| 视频一区欧美精品| 一区二区精品伦理...| 视频一区二区三区入口| 久久av资源| 久久99伊人| 91偷拍一区二区三区精品| 久久免费精品| 在线精品视频一区| 国产欧美一区二区三区精品酒店| 亚洲欧美日本视频在线观看| 久久久久伊人| 亚洲精品伊人| 亚洲天堂一区二区| 欧美日一区二区三区在线观看国产免| 亚洲成人av观看| 欧美肉体xxxx裸体137大胆| 婷婷视频一区二区三区| 欧美日韩一视频区二区| 亚洲成人日韩| 在线天堂中文资源最新版| 国产色99精品9i| 亚洲天堂日韩在线| 亚洲天堂久久| 韩国久久久久久| 麻豆91精品视频| 色8久久久久| 亚洲激情黄色| 成人在线超碰| 麻豆久久久久久久| 日韩avvvv在线播放| 最新国产拍偷乱拍精品| 亚洲女同av| 91麻豆国产自产在线观看亚洲| 国产美女亚洲精品7777 | 国产精品一区二区精品| 久久夜色精品| 日韩视频精品在线观看| 天堂av在线| 国产va在线视频| 精品日韩在线| 久久国产日韩欧美精品| 免费看日韩精品| 国产一区导航| 亚洲综合日韩| 午夜在线一区| 99在线|亚洲一区二区| 青青国产精品| 日韩国产欧美在线视频| 亚洲欧美专区| 日韩精品亚洲专区| 亚洲精品影视| 日韩视频1区| 日本欧美一区| 国产精品任我爽爆在线播放 | 亚洲欧美日韩在线观看a三区| 亚洲国产一区二区三区在线播放| 亚洲不卡av不卡一区二区| 日韩网站中文字幕| 欧美日韩一区二区三区视频播放| 婷婷综合六月| 99久久精品网站| 国产综合色产| 国产精品日韩欧美一区| 噜噜噜久久亚洲精品国产品小说| 久久aⅴ国产紧身牛仔裤| 性一交一乱一区二区洋洋av| 日韩制服丝袜av| 色婷婷成人网| 91亚洲精品视频在线观看| 日韩av网站免费在线| 麻豆精品蜜桃视频网站| 日产精品一区二区| 日韩欧美一区二区三区在线观看 | 日韩啪啪电影网| 国产尤物精品| 亚洲综合日本| 国产剧情一区二区在线观看| 麻豆精品视频在线| 天堂中文av在线资源库| 亚洲五月婷婷| 三级欧美韩日大片在线看| 日韩精品一区二区三区免费视频| 97精品资源在线观看| 久久精品一区| 91精品一区二区三区综合在线爱| 国产精品腿扒开做爽爽爽挤奶网站| 中文字幕亚洲精品乱码| 国产日产精品_国产精品毛片 | 国产一区一一区高清不卡| 久久久人人人| 亚洲天堂av资源在线观看| 国产精品sss在线观看av| 亚洲天堂av影院| 麻豆亚洲精品| 国产精品99久久免费观看| 99精品国产一区二区三区| 日韩天堂av| 国产精品三级| 欧美日韩精品免费观看视频完整| 亚洲精选av| 免费在线日韩av| 午夜国产精品视频免费体验区| 日韩国产精品久久久久久亚洲| 福利一区在线| 免费视频最近日韩| 久久免费影院| 夜夜精品视频| 红杏一区二区三区| 欧美一区=区| 岛国av免费在线观看| 石原莉奈一区二区三区在线观看| 国产精品男女| 欧美日韩国产欧| 久久久精品国产**网站| 美女久久网站| 精品国产免费人成网站| 日韩影片在线观看| 久久精品免费一区二区三区| 亚洲1区在线观看| 99精品美女| 久久久免费人体| 亚洲精品中文字幕99999| 欧美成人a交片免费看| 欧美一区成人| 国产一级一区二区| 黄色在线网站噜噜噜| 亚洲精品观看| 91精品一区国产高清在线gif | 美女视频黄 久久| 中文字幕日韩欧美精品高清在线| 日韩黄色大片| 欧美a一区二区| 亚洲精品看片| 欧美91福利在线观看| 狠狠久久伊人| 国产日本久久| 亚洲综合日韩| 999精品色在线播放| 老牛国内精品亚洲成av人片| 日韩三级一区| 在线视频亚洲欧美中文| 九九精品调教| 国产精品久久观看| 欧美国产视频| 国产精品美女在线观看直播| 亚洲人www| 99香蕉国产精品偷在线观看 | 国产一区精品福利| 欧美日韩xxxx| 日本亚洲不卡| 亚洲精品动态| 亚洲综合婷婷| 国产视频一区免费看| 精品欧美久久| 国产一区亚洲| 伊人精品一区| 日韩在线不卡| 日韩久久精品| 一本大道色婷婷在线| 精品一二三区| 欧美激情aⅴ一区二区三区|