青島市住房和城鄉(xiāng)建設(shè)局官方網(wǎng)站營銷傳播服務(wù)
假設(shè)已配好nacos服務(wù):并且已配好userservice、orderservice,點擊跳轉(zhuǎn)
Feign是一個聲明式的http客戶端,官方地址:https://github.com/OpenFeign/feign,其作用就是在程序中幫助我們優(yōu)雅的實現(xiàn)http請求的發(fā)送,解決RestTemplate的遠程調(diào)用硬編碼的問題。
pom.xml
導(dǎo)入Feign依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.2.7.RELEASE</version>
</dependency>
?
?
在啟動類OrderApplication.java
中添加開啟Feign注解
@EnableFeignClients // 開啟Feign
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {...
}
?
?
新建文件UserClient.java
編寫Feign客戶端:
@FeignClient("userservice") // userservice為nacos遠程調(diào)用的服務(wù)端名稱
public interface UserClient {@GetMapping("/user/{id}") // 請求地址為:http://userservice/user/{id}User findById(@PathVariable("id") Long id);
}
?
?
TestService.java
測試使用
public class OrderService {@Autowiredprivate UserClient userClient; // 自動注入UserClientpublic Order queryOrderById(Long orderId) {Order order = orderMapper.findById(orderId);User user = userClient.findById(order.getUserId()); // Feign遠程調(diào)用 http://userservice/user/{id}order.setUser(user);return order;}
}
?
?
自定義的一些配置:如日志級別
方式一:application.yml
配置文件
feign:client:config:userservice: # 針對某個服務(wù)logger-level: FULL # 日志級別#default: # default就是全局配置,如果是寫服務(wù)名稱,則是針對某個微服務(wù)的配置#logger-level: BASIC
方式二: 重寫Logger.Level
的Bean實列
DefaultFeignConfig.java
// @Configuration // 如果不想要配置以下兩種,則直接加這個注解,讓spring掃描到
public class DefaultFeignConfig {@Beanpublic Logger.Level feignLogLevel() {return Logger.Level.FULL;}
}
1. 如果要全局生效,將其放到Application.java
啟動類的@EnableFeignClients這個注解中:
@EnableFeignClients(defaultConfiguration = DefaultFeignConfig.class)
2. 如果是局部生效,則把它放到對應(yīng)的@FeignClient這個注解中:也就是上面的UserClient.java
中加入以下注解
@FeignClient(value = "userservice", configuration = DefaultFeignConfig.class)
?
?
Fegin 開啟(Apache HttpClient)連接池
默認是URLConnection,不支持連接池。
pom.xml
導(dǎo)入依賴
<!--httpClient的依賴 -->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId><version>10.10.1</version>
</dependency>
配置文件application.yml
配置httpclient連接池參數(shù)
feign:client:config:default: # default全局的配置loggerLevel: BASIC # 日志級別,BASIC就是基本的請求和響應(yīng)信息httpclient: # httpclient連接池enabled: true # 開啟feign對HttpClient的支持max-connections: 200 # 最大的連接數(shù)max-connections-per-route: 50 # 每個路徑的最大連接數(shù)