使用Spring Cloud Feign遠(yuǎn)程調(diào)用的方法示例
在Spring Cloud Netflix棧中,各個(gè)微服務(wù)都是以HTTP接口的形式暴露自身服務(wù)的,因此在調(diào)用遠(yuǎn)程服務(wù)時(shí)就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。但是,用起來最方便、最優(yōu)雅的還是要屬Feign了。
Feign簡介
Feign是一個(gè)聲明式的Web服務(wù)客戶端,使用Feign可使得Web服務(wù)客戶端的寫入更加方便。
它具有可插拔注釋支持,包括Feign注解和JAX-RS注解、Feign還支持可插拔編碼器和解碼器、Spring Cloud增加了對Spring MVC注釋的支持,并HttpMessageConverters在Spring Web中使用了默認(rèn)使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign時(shí)提供負(fù)載平衡的http客戶端。
Spring Cloud Feign簡介參考:http://www.dbjr.com.cn/article/133773.htm
根據(jù)專家學(xué)者提供的賬號密碼,要在用戶表注冊一個(gè)專家學(xué)者賬號(用戶和專家學(xué)者不同的數(shù)據(jù)庫)
在userContorller.java寫一個(gè)方法:注冊專家學(xué)者賬號
/** * 專家學(xué)者注冊 * * @param username * @param password * @return */ @ApiOperation(value = "專家學(xué)者注冊") @RequestMapping(value = "/registExpert", method = RequestMethod.POST) public long registExpert(@RequestParam("username") String username, @RequestParam("password") String password) { User user = new User(); user.setUsername(username); user.setPassword(password); userService.insertSelective(user); long userId = user.getUserId(); return userId; }
UserClient.java(這里的接口和要遠(yuǎn)程調(diào)用的controller方法聲明一樣(此處是UserController.java),可直接復(fù)制過來,如下所示)
package com.lgsc.cjbd.expert.remote.client; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.lgsc.cjbd.vo.Response; @FeignClient(name = "cjbd-user", fallback = UserClientFallback.class) public interface UserClient { /** * 注冊專家學(xué)者 */ @RequestMapping(value = "/user/user/registExpert", method = RequestMethod.POST) long registExpert(@RequestParam("username") String username, @RequestParam("password") String password); }
以及失敗回調(diào)用UserClientFallBack.java
package com.lgsc.cjbd.expert.remote.client; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Component; import com.lgsc.cjbd.vo.Response; /** * 失敗回調(diào) * * @author yeqj */ @Component public class UserClientFallback implements UserClient { private static Logger log = LogManager.getLogger(UserClientFallback.class); @Override public long registExpert(String username, String password, String realName) { log.error("遠(yuǎn)程調(diào)用失敗,注冊專家學(xué)者失敗,參數(shù):[username=" + username + ",password=" + password + "]"); return 0; } }
之后再專家學(xué)者Service層傳遞專家學(xué)者用戶名和密碼過去,在用戶表新增專家學(xué)者注冊記錄
userClient.registExpert(username, password);
即可完成遠(yuǎn)程調(diào)用
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java將html轉(zhuǎn)成圖片代碼實(shí)例(html2image)
這篇文章主要介紹了java將html轉(zhuǎn)成圖片的相關(guān)資料,在Java開發(fā)中,將HTML轉(zhuǎn)換為圖片可以使用html2image庫,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09SpringBoot+SpringSecurity實(shí)現(xiàn)基于真實(shí)數(shù)據(jù)的授權(quán)認(rèn)證
Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架,Spring Security主要做兩個(gè)事情,認(rèn)證、授權(quán)。這篇文章主要介紹了SpringBoot+SpringSecurity實(shí)現(xiàn)基于真實(shí)數(shù)據(jù)的授權(quán)認(rèn)證,需要的朋友可以參考下2021-05-05解決Spring?Security集成knife4j訪問接口文檔出現(xiàn)403的問題
這篇文章主要給大家介紹了如何解決Spring?Security集成knife4j訪問接口文檔出現(xiàn)403的問題,文中有詳細(xì)的解決方案,有需要的朋友可以參考閱讀下2023-07-07java用字節(jié)數(shù)組解決FileInputStream讀取漢字出現(xiàn)亂碼問題
這篇文章主要介紹了java用字節(jié)數(shù)組解決FileInputStream讀取漢字出現(xiàn)亂碼問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java使用bcrypt實(shí)現(xiàn)對密碼加密效果詳解
bcrypt是一種自帶鹽值(自動(dòng)加鹽)的加密方案。本文將通過示例為大家詳細(xì)介紹這一對密碼進(jìn)行加密的算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-03-03