SpringCloud OpenFeign超詳細(xì)講解模板化遠(yuǎn)程通信的實(shí)現(xiàn)
1. openFeign實(shí)現(xiàn)
基于spring-boot-starter-parent 2.6.8,spring-cloud-dependencies 2021.0.3,一個(gè)order服務(wù)一個(gè)user服務(wù)
1.1 pom依賴
<!--nacos服務(wù)注冊(cè)與發(fā)現(xiàn)--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.0.1.0</version> </dependency> <!--遠(yuǎn)程服務(wù)調(diào)用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> </dependency> <!--服務(wù)調(diào)用feign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
1.2 yaml配置
order調(diào)用端,配置的超時(shí)設(shè)置注釋掉了只為記錄
spring:
application:
name: orderservice
cloud:
#找對(duì)應(yīng)網(wǎng)段的網(wǎng)卡 不配置內(nèi)部服務(wù)就走外網(wǎng)
inetutils:
preferred-networks: 192.168.0
nacos:
discovery:
server-addr: 192.168.0.221:8848
#feign:
# client:
# config:
# #default設(shè)置的是全局超時(shí)時(shí)間,對(duì)所有的openFeign接口服務(wù)都生效 默認(rèn)60s超時(shí)
# default:
# connectTimeout: 5000
# readTimeout: 5000
# #為某個(gè)服務(wù)設(shè)置超時(shí)時(shí)間 優(yōu)先于全局
# userservice:
# connectTimeout: 5000
# readTimeout: 5000
user服務(wù)僅需要注冊(cè)
spring:
application:
name: userservice
cloud:
#找對(duì)應(yīng)網(wǎng)段的網(wǎng)卡 不配置內(nèi)部服務(wù)就走外網(wǎng)
inetutils:
preferred-networks: 192.168.0
nacos:
discovery:
server-addr: 192.168.0.221:8848
遠(yuǎn)程調(diào)用依賴于注冊(cè)中心,這里用的是nacos,其他的eureka也可以的
1.3 客戶端調(diào)用代碼
- 啟動(dòng)類上添加
@EnableFeignClients注解 - api接口,可以單獨(dú)放在api包
@FeignClient(value = "userservice")
//沒有注冊(cè)中心的服務(wù)調(diào)用使用 testFeign/隨便寫
//@FeignClient(value = "testFeign",url = "http://192.168.0.199:7540")
public interface UserService {
//默認(rèn)是@RequestBody注解參數(shù)
//如果使用其他注解一定要帶上value 否者會(huì)報(bào)錯(cuò) RequestParam.value() was empty on parameter 1
@GetMapping("/getTime/{uuid}")
String getTime(@PathVariable("uuid") String uuid, @RequestParam("name") String name);
@PostMapping("/postTime")
Map<String, Object> getTime(@RequestBody Map<String, Object> params);
}客戶端代碼
@Resource
UserService userService;
@GetMapping("/test")
public String test() throws Exception {
log.info("openFeign -- start");
Map<String, Object> time = userService.getTime(resMap);
log.info("openFeign -- {}", time);
return template + ":" + time;
}1.4.服務(wù)端暴露接口
@PostMapping("/postTime")
public Map<String, Object> getTime(@RequestBody Map<String, Object> params) {
params.put("time", new Date().getTime());
return params;
}
1.5.測(cè)試日志
c.e.order.controller.OrderController : openFeign -- start
c.e.order.controller.OrderController : openFeign -- {aaaa=bbbb, time=1657187048104}
到此這篇關(guān)于SpringCloud OpenFeign超詳細(xì)講解模板化遠(yuǎn)程通信的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringCloud OpenFeign模板化遠(yuǎn)程通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud?OpenFeign?服務(wù)調(diào)用傳遞?token的場(chǎng)景分析
- springcloud引入spring-cloud-starter-openfeign失敗的解決
- SpringCloud升級(jí)2020.0.x版之OpenFeign簡(jiǎn)介與使用實(shí)現(xiàn)思路
- 一篇文章教你如何在SpringCloud項(xiàng)目中使用OpenFeign
- 完美解決SpringCloud-OpenFeign使用okhttp替換不生效問題
- SpringCloud OpenFeign Post請(qǐng)求400錯(cuò)誤解決方案
- SpringCloud OpenFeign超時(shí)控制示例詳解
相關(guān)文章
Java實(shí)現(xiàn)手寫一個(gè)線程池的示例代碼
線程池技術(shù)想必大家都不陌生把,相信在平時(shí)的工作中沒有少用,而且這也是面試頻率非常高的一個(gè)知識(shí)點(diǎn),那么大家知道它的實(shí)現(xiàn)原理和細(xì)節(jié)嗎?本文就來通過手寫一個(gè)簡(jiǎn)單的線程池框架,去掌握線程池的基本原理,感興趣的可以學(xué)習(xí)一下2022-10-10
Java Servlet中Response對(duì)象的使用方法
本文介紹了Java Servlet中Response對(duì)象的使用方法,包括設(shè)置響應(yīng)頭、設(shè)置響應(yīng)編碼、向客戶端發(fā)送數(shù)據(jù)、重定向等操作,同時(shí)介紹了常用的響應(yīng)狀態(tài)碼和響應(yīng)類型,幫助讀者更好地理解和掌握Servlet中Response對(duì)象的用法2023-05-05
Java實(shí)現(xiàn)AWT四大事件的詳細(xì)過程
AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個(gè)事件處理委托給特定的對(duì)象(事件監(jiān)聽器);當(dāng)該事件源發(fā)生指定的事件時(shí),就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個(gè)事件2022-04-04
Java純代碼實(shí)現(xiàn)導(dǎo)出文件為壓縮包
這篇文章主要為大家詳細(xì)介紹了Java如何代碼實(shí)現(xiàn)導(dǎo)出文件為壓縮包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
Java面試之如何實(shí)現(xiàn)10億數(shù)據(jù)判重
當(dāng)數(shù)據(jù)量比較大時(shí),使用常規(guī)的方式來判重就不行了,所以這篇文章小編主要來和大家介紹一下Java實(shí)現(xiàn)10億數(shù)據(jù)判重的相關(guān)方法,希望對(duì)大家有所幫助2024-02-02

