SpringCloud基于Feign的可编程式接口调用实现(springcloud feign使用)

网友投稿 302 2022-08-03


SpringCloud基于Feign的可编程式接口调用实现(springcloud feign使用)

目录前言一、基本使用1.引依赖2.加注解3.声明接口4.调用二、进阶1.日志配置2.性能优化

前言

Feign 可以替代 RestTemplate 完成可编程式接口调用,并且内部集成 Ribbon 实现了负载均衡

一、基本使用

1.引依赖

pom文件增加 openfeign 依赖

org.springframework.cloud&lUcmreAOkt;/groupId>

spring-cloud-starter-openfeign

2.加注解

启动类上增加 @EnableFeignClients 注解

@EnableFeignClients

@SpringBootApplication

public class OrderApplication {

public static void main(String[] args) {

SpringApplication.run(OrderApplication.class, args);

}

}

3.声明接口

创建client包,包下放使用到的接口

package com.cxstar.client;

import com.alibaba.fastjson.JSONObject;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient("bookschina-service")

@RequestMapping("/bookschina")

public interface BookschinaClient {

@GetMapping("/spiderBookList/{searchkey}/{pageno}")

JSONObject searchBookschina(

@PathVariable("searchkey") String searchKey,

@PathVariable("pageno") Integer pageNo

);

}

直接把你需要调用的微服务里的controller类复制一份过来,修修改改就行了ps:1.@FeignClient(“bookschina-service”):访问 spring.application.name=bookschina-service 的微服务2.@RequestMapping、@GetMapping、@PathVariable 用来映射地址,和controller中的用法一样3.上面这个接口对应的就是 bookschina-service 微服务下映射地址为 /bookschina/spiderBookList/{searchkey}/{pageno} 的controller类方法

4.调用

测试类如下

package com.cxstar;

import com.alibaba.fastjson.JSONObject;

import com.cxstar.client.BookschinaClient;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

@Slf4j

@SpringBootTest

class OrderApplicationTests {

@Autowired

private BookschinaClient bookschinaClient;

void booksChinaTest() {

// 参数

String searchKey = "东野圭吾";

Integer pageNo = 1;

// 调用

JSONObject booksJB = bookschinaClient.searchBookschina(searchKey, pageNo);

log.info(booksJB.toString());

}

}

二、进阶

1.日志配置

application 文件中加入配置

feign:

client:

config:

default: # default 全局配置,局部配置的话可以换成请求的服务名称

loggerLevel: NONE # 日志级别 NONE BASIC HEADERS FULL

ps:1.NONE:没有日志2.BASIC:记录http请求发送目标、发送时间、返回时间、总耗时等信息3.HEADERS:在 BASIC 基础上记录 请求头 和 响应头 信息4.FULL:在 BASIC 和 HEADERS 的基础上记录 请求体 和 响应体 信息5.上线后为了优化性能 日志级别尽量用 NONE 或者 BASIC

2.性能优化

Feign底层客户端默认实现是 URLConnection,不支持连接池,每次http请求都要三次握手,断开时四次挥手,有点浪费性能,可以用 Apache HttpClient 替代 URLConnection

<1>pom 引入依赖

io.github.openfeign

feign-httpclient

<2>application 文件中加入配置

feign:

httpclient:

enabled: true # 开启feign对 httpclient 的支持

max-connections: 200 # 最大连接数

max-connections-per-route: 50 # 每个请求接口的最大连接数

ps:1.max-connections 和 max-connections-per-route 的值需要根据具体情况设定


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java并发编程之线程创建介绍(Java高并发编程详解:多线程与架构设计)
下一篇:Java 使用geotools读取tiff数据的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~