SpringCloud-服務消費者(Ribbon)
1、POM
<parent>
<groupId>com.xxx</groupId>
<artifactId>xxx</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>xxx-webapi</artifactId>
<name>xxx-webapi</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>xxx-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- json start -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.15</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.3</version>
<classifier>jdk15</classifier>
</dependency>
<!-- gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- json end -->
<!-- ribbon消費者springcloud jar start -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- ribbon消費者springcloud jar end -->
</dependencies>
<build>
<finalName>xxx-webapi</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
2、啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class WebApiApplication {
private static final Logger log = LoggerFactory.getLogger(WebApiApplication.class);
public static void main(String[] args) {
log.info("**********介面中心啟動-開始**********");
try {
SpringApplication.run(WebApiApplication.class, args);
log.info("**********介面中心啟動-成功**********");
}
catch (Throwable e) {
log.info("**********介面中心啟動-失敗**********");
}
}
@Bean//向程式的ioc注入一個bean
@LoadBalanced//表明這個restRemplate開啟負載均衡的功能
RestTemplate restTemplate() {
return new RestTemplate();
}
}
3、配置
#專案系統配置start
#預設埠
server.port=9002
#系統服務名稱
spring.application.name=xxx-webapi
#註冊中心
eureka.client.serviceUrl.defaultZone=http://admin:[email protected]:9502/eureka/
#表示是否將自己註冊到Eureka Server
eureka.client.registerWithEureka=false
#表示是否從Eureka Server獲取註冊資訊
eureka.client.fetchRegistry=true
#服務呼叫超時
#請求處理的超時時間(預設5s)
ribbon.ReadTimeout=5000
#請求連線的超時時間(預設2s)
ribbon.ConnectTimeout=2000
#對所有操作請求都進行重試
hello-service.ribbon.OkToRetryOnAllOperations=false
#對當前例項的重試次數
ribbon.MaxAutoRetries=0
#切換例項的重試次數
ribbon.MaxAutoRetriesNextServer=0
#LOG
logging.file=./logs/log.log
#日誌級別
logging.level.org.springframework=DEBUG
#專案系統配置end
#服務地址列表start*********************************
#銀行卡認證服務
auth.url=http://xxx-provider/bankcard/auth
#服務地址列表end*********************************
#系統常量配置start*********************************
#系統常量配置end*********************************
4、demo
@RestController
@RequestMapping("/user")
public class UserController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private RibbonCommonService ribbonCommonService;
@Value("${auth.url}")
private String authUrl;
@RequestMapping(value = "/auth", method = RequestMethod.POST)
public Object bankCardFourElementAuth(HttpServletRequest request,@RequestParam Map<String, Object> map) {
xxxResVo resVo = new xxxResVo();
log.info("介面請求引數:{}", map);
try {
//......
String result = ribbonCommonService.ribbonPost(reqVo, authUrl);
log.info("銀行卡四要素認證請求返回資訊:{}", result);
//......
}
catch (Throwable e) {
log.error("xxxxxx系統異常", e);
//......
}
log.info("銀行卡四要素認證介面返回資訊:{}", resVo);
return resVo;
}
}
public interface RibbonCommonService {
/**
* ribbon-post請求服務方式(baseReqVo)
*
* @version 2018年1月4日下午12:43:58
* @author wuliu
* @param params
* @param url
* @return
*/
public String ribbonPost(BaseReqVo baseReqVo, String url);
/**
* ribbon-post請求服務方式(map)
*
* @version 2018年1月4日下午12:43:58
* @author wuliu
* @param params
* @param url
* @return
*/
public String ribbonPost(Map<String,Object> params, String url);
}
@Service
public class RibbonCommonServiceImpl implements RibbonCommonService{
@Autowired
private RestTemplate restTemplate;
@Override
public String ribbonPost(BaseReqVo baseReqVo, String url) {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.set("Connection", "Close");
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
JSONObject jsonObj = JSONObject.fromObject(baseReqVo);
HttpEntity<String> formEntity = new HttpEntity<String>(jsonObj.toString(), headers);
String result = restTemplate.postForObject(url, formEntity, String.class);
return result;
}
@Override
public String ribbonPost(Map<String, Object> params, String url) {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.set("Connection", "Close");
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
JSONObject jsonObj = JSONObject.fromObject(params);
HttpEntity<String> formEntity = new HttpEntity<String>(jsonObj.toString(), headers);
String result = restTemplate.postForObject(url, formEntity, String.class);
return result;
}
}
相關推薦
SpringCloud-服務消費者(Ribbon)
1、POM <parent> <groupId>com.xxx</groupId> <artifactId>xxx</artifactId> <version&
SpringCloud 服務消費者-rest+ribbon
spring cloud有兩種服務呼叫方式,一種是ribbon+restTemplate,另一種是feign. ribbon ribbon是一個負載均衡客戶端,Feign預設集成了ribbon。ribbon已經預設實現瞭如下配置bean: (1) IClientConfig ribbon
springCloud-netflix-Eureka服務消費者(ribbon+restTemplat)
在上一篇文章,講了服務的註冊和發現。在微服務架構中,業務都會被拆分成一個獨立的服務,服務與服務的通訊是基於http restful的。Spring cloud有兩種服務呼叫方式,一種是ribbon+restTemplate,另一種是feign。在這一篇文章首先講解下基於ribbon+
SpringCloud微服務學習3-服務消費者ribbon
我們上一節, 已經學習瞭如何使用LoadBanncerClient來獲取服務的具體資訊, 然後根據獲取具體的資訊呼叫服務的提供的介面,這樣需要我們去手動拼接, 這樣比較繁瑣,對於開發人員來說非常的不友好, 所以今天我們來看一下springCloud對於對於客戶端的負載
SpringCloud框架服務消費者-Ribbon
上文我們建立了註冊中心,以及服務的提供者microservice-provider-user,併成功 地將服務提供者註冊到了註冊中心上。 要想消費microservice-provider-user的服務是很簡單的,我們只需要使用 RestTemplate即可,或者例如HttpClien
springcloud 服務消費者 - Feign
簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign只需要建立一個介面並添加註解,可以使用Feign註解和JAX-RS註解。Feign預設集成了Ribbon,並和Eureka結合。 實踐 1、啟動eureka-server,埠為8761.啟動s
springcloud 服務消費者(Feign)錯誤集錦
【前言】 最近在看方誌朋的spingcloud教程,把我遇到的錯誤分享給大家。 【過程】 按照方老師的教程一步步的往下進行之後遇到的第一個錯誤就是@EnableFeignClients註解無法識別,多方查閱部落格 ,大部分人給出的建議都是在pom檔案中新增如下資訊:
springcloud 服務消費者
簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign只需要建立一個介面並添加註解,可以使用Feign註解和JAX-RS註解。Feign預設集成了Ribbon,並和Eureka結合。 實踐 1、啟動eureka-server,埠
SpringCloud服務消費者第一次調用出現超時問題的解決方案
https://www.cnblogs.com/yangzhilong/p/6770359.html 在第一次訪問服務消費者的時候(消費者去呼叫服務提供者服務)會出現如下異常: com.netflix.hystrix.exception.HystrixRuntimeException: Te
SpringCloud 服務消費者Feign
個人學習SpringCloud系列 Feign篇 Github Link: https://github.com/panjianlong13/SpringBoot-SpringCloud/tree/master/spring-cloud-feign Feign介紹 Feign是一種宣
SpringCloud--服務消費者(Feign)
一、Feign簡介 Feign是一個宣告式的web服務客戶端,它使得寫web服務變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,包括Feign 註解和JAX-RS註解。Feign同時支援可插拔的編碼器和解碼器。spring cloud對Sp
SpringCloud 服務消費者(Feign)(Finchley版本)(三)
上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 一、Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它
Eureka客戶端-服務消費者(Ribbon+Hystrix)
1、pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.ou
Eureka客戶端-服務消費者(Ribbon)
1、pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s
springcloud服務消費者使用foeign,不識別@EnableFeignClients 註解解決辦法
版本: 我使用的是springboot版本2.0,springcloud版本為Finchley.M8 springcloud依賴管理,用於管理spring-cloud的依賴版本統一 所有在
SpringCloud: 服務消費者(Feign)
上一篇文章,講述瞭如何通過RestTemplate+Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。 Feign簡介 Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。
SpringCloud--服務消費者使用RestTemplate呼叫服務報錯解決方案
xl_echo編輯整理,歡迎轉載,轉載請宣告文章來源。更多IT程式設計案例、資料請聯絡QQ:1280023003 ,群:298140694 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 開發工具 版本
SpringCloud--服務消費者RestTemplate開啟斷路器(Hystrix)
xl_echo編輯整理,歡迎轉載,轉載請宣告文章來源。更多IT程式設計案例、資料請聯絡QQ:1280023003 ,群:298140694 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 斷路器是我們單間一整套微服務中的一
springcloud之服務消費者(ribbon)
serve frame ribbon lee cti 代碼 images net 發現 本章介紹springcloud中的服務消費者 springcloud服務調用方式有兩種實現方式: 1,restTemplate+ribbon, 2,feign
史上最簡單的SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)
image tree 開啟 then rom cat learn 替代 官網 最新Finchley版本:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f2-ribbon/或者http://blog.csdn.n