一、基于Feign遠(yuǎn)程調(diào)用
1令宿、引入Feign依賴
<!--feign客戶端依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2叼耙、添加注解開啟Feign的功能
@EnableFeignClients()
3、聲明遠(yuǎn)程調(diào)用
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
4粒没、使用FeignClient調(diào)用方法
@Autowired
private UserClient userClient;
public Order queryOrderById(Long orderId) {
// 1.查詢訂單
Order order = orderMapper.findById(orderId);
}
二筛婉、自定義配置
feign.Logger.Level:修改日志級別(NONE、BASIC、HEADERS爽撒、FULL)
feign.codec.Decoder:響應(yīng)結(jié)果的解析器(http遠(yuǎn)程調(diào)用的結(jié)果做解析)
feign.codec.Encoder:請求參數(shù)編碼(將請求參數(shù)編碼入蛆,便通過http請求發(fā)送)
feign.Contract:支持的注解格式(默認(rèn)是SpringMVC的注解)
feign.Retryer:失敗重試機(jī)制(請求失敗的重試機(jī)制,默認(rèn)沒有硕勿,不過會使用Ribbon的重試)
(1)基于配置文件修改日志
feign:
client:
config:
default:
loggerLevel: FULL #設(shè)置顯示日志
(2)基于java代碼配置
public class DefaultFeignConfiguration {
@Bean
public Logger.Level logLevel(){
return Logger.Level.BASIC;
}
}
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class)//Java代碼添加日志
三哨毁、性能優(yōu)化
1、使用支持連接池
<!--引入HttpClient依賴-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
feign:
client:
config:
default:
loggerLevel: BASIC #設(shè)置顯示日志
httpclient:
enabled: true #支持httpclient
max-connections: 200
max-connections-per-route: 50
2源武、日志級別:使用NONE或BASIC
四扼褪、Feign最佳實(shí)踐
將FeignClient抽取問獨(dú)立模塊,并且把接口有關(guān)的POJO粱栖、默認(rèn)的Feign配置都放在這個模塊中话浇,提供給所有消費(fèi)者使用
(1)創(chuàng)建一個module、命名為feign-api闹究,然后引入feign的starter依賴
(2)將代碼中編寫的UserClient幔崖、User、DefaultFeignConfiguration都復(fù)制到feign-api項(xiàng)目中
(3)在模塊中引入feign-api的依賴
//加載UserClient
@EnableFeignClients(clients = {UserClient.class})