使用Spring Cloud Feign遠程調用的方法示例
在Spring Cloud Netflix棧中,各個微服務都是以HTTP接口的形式暴露自身服務的,因此在調用遠程服務時就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。但是,用起來最方便、最優(yōu)雅的還是要屬Feign了。
Feign簡介
Feign是一個聲明式的Web服務客戶端,使用Feign可使得Web服務客戶端的寫入更加方便。
它具有可插拔注釋支持,包括Feign注解和JAX-RS注解、Feign還支持可插拔編碼器和解碼器、Spring Cloud增加了對Spring MVC注釋的支持,并HttpMessageConverters在Spring Web中使用了默認使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign時提供負載平衡的http客戶端。
Spring Cloud Feign簡介參考:http://www.dbjr.com.cn/article/133773.htm
根據(jù)專家學者提供的賬號密碼,要在用戶表注冊一個專家學者賬號(用戶和專家學者不同的數(shù)據(jù)庫)
在userContorller.java寫一個方法:注冊專家學者賬號
/**
* 專家學者注冊
*
* @param username
* @param password
* @return
*/
@ApiOperation(value = "專家學者注冊")
@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(這里的接口和要遠程調用的controller方法聲明一樣(此處是UserController.java),可直接復制過來,如下所示)
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 {
/**
* 注冊專家學者
*/
@RequestMapping(value = "/user/user/registExpert", method = RequestMethod.POST)
long registExpert(@RequestParam("username") String username, @RequestParam("password") String password);
}
以及失敗回調用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;
/**
* 失敗回調
*
* @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("遠程調用失敗,注冊專家學者失敗,參數(shù):[username=" + username + ",password=" + password + "]");
return 0;
}
}
之后再專家學者Service層傳遞專家學者用戶名和密碼過去,在用戶表新增專家學者注冊記錄
userClient.registExpert(username, password);
即可完成遠程調用
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot+SpringSecurity實現(xiàn)基于真實數(shù)據(jù)的授權認證
Spring Security是一個功能強大且高度可定制的身份驗證和訪問控制框架,Spring Security主要做兩個事情,認證、授權。這篇文章主要介紹了SpringBoot+SpringSecurity實現(xiàn)基于真實數(shù)據(jù)的授權認證,需要的朋友可以參考下2021-05-05
解決Spring?Security集成knife4j訪問接口文檔出現(xiàn)403的問題
這篇文章主要給大家介紹了如何解決Spring?Security集成knife4j訪問接口文檔出現(xiàn)403的問題,文中有詳細的解決方案,有需要的朋友可以參考閱讀下2023-07-07
java用字節(jié)數(shù)組解決FileInputStream讀取漢字出現(xiàn)亂碼問題
這篇文章主要介紹了java用字節(jié)數(shù)組解決FileInputStream讀取漢字出現(xiàn)亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

