feign 是netflix 提供的申明式的httpclient调用框架

整合方法

1.添加依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在application 添加注解

@EnableFeignClients

3.编写调用代码

@FeignClient(name = "jpaas-form")
public interface FormClient { /**
* 根据表单别名获取表单相关数据。
* @param alias
* @param pk
* @param initPermission
* @return
*/
@GetMapping("/form/core/formPc/getByAlias")
JsonResult<BpmView> getByAlias(@RequestParam(value = "alias") String alias,
@RequestParam(value = "pk")String pk,
@RequestParam(value = "initPermission") Boolean initPermission);

1.添加一个接口类。

2.增加@FeignClient 注解

name 指向需要调用的 微服务名称

3.增加调用方法

遵循 mvc的写法,如果返回的数据是一个java对象,最好把这个实体做成公共的类,供被调用者和调用者进行使用。

@GetMapping("/users/{id}")
UserDTO findById(@PathVariable Integer id);

方法示例,和spring mvc 差不多。

4.自定义FEIGN日志级别

feign 日志级别,就是需要打印feign的调用参数和响应数据。

使用java代码来实现。

1.编写配置类

import feign.Logger;
import org.springframework.context.annotation.Bean; public class UserCenterFeignClientConfig { @Bean
public Logger.Level level(){
return Logger.Level.FULL;
}
}

2.feign client 类指定配置

@FeignClient(name = "user-center",
// fallback = UserCenterFeignClientFallback.class,
// fallbackFactory = UserCenterFeignClientFallbackFactory.class,
configuration = UserCenterFeignClientConfig.class
)
public interface UserCenterFeignClient {

3.在日志中进行指定

编辑 application.yml

logging:
level:
com.demo.contentcenter.feignclient.UserCenterFeignClient: debug

注意这个日志界别需要为 debug 级别,只有在debug模式才会输出feign日志。

4. feign 多参数请求实现

请参考文章

http://www.imooc.com/article/289000

5.使用 feign 访问非 注册服务数据

有些情况下,我们使用feign 访问外部url,比如访问 博客网首页。

编写代码:

@FeignClient(name = "cnblogs", url = "https://www.cnblogs.com")
public interface ExternalFeignClient {
@GetMapping("/yg_zhang")
String index();
}

这里需要指定 name 和URL地址。

6.性能优化

配置启用http连接池:

<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>10.2.3</version>
</dependency>

修改 application.yml

feign:
client:
config:
# 全局配置
default:
loggerLevel: basic httpclient:
enabled: true
max-connections: 200
max-connections-per-route: 50

7.feign 的常见问题

http://www.imooc.com/article/289005

feign 使用的更多相关文章

  1. Spring Cloud 声明式服务调用 Feign

    一.简介 在上一篇中,我们介绍注册中心Eureka,但是没有服务注册和服务调用,服务注册和服务调用本来应该在上一章就应该给出例子的,但是我觉得还是和Feign一起讲比较好,因为在实际项目中,都是使用声 ...

  2. Feign使用Hystrix无效原因及解决方法

    最近项目重构使用了Spring Boot和Spring Cloud.这两者结合确实给项目带来了方便,同时也遇到了一些问题.其中使用feign作为服务消费,但是断路器hystrix一直不起作用让人很费解 ...

  3. 在dropwizard中使用feign,使用hystrix

    前言 用惯了spring全家桶之后,试试dropwizard的Hello World也别有一帆风味.为了增强对外访问API的能力,需要引入open feign.这里简单在dropwizard中使用fe ...

  4. spring cloud feign不支持@RequestBody+ RequestMethod.GET,报错

    1.问题梳理: 异常:org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not ...

  5. 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign

    上一篇文章讲到了负载均衡在Spring Cloud体系中的体现,其实Spring Cloud是提供了多种客户端调用的组件,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使 ...

  6. Spring Cloud Feign 整合 Hystrix

    在前面随笔Spring Cloud 之 Feign的feign工程基础上进行改造 1.pom.xml依赖不变 2.application.yml文件添加feign.hystrix.enabled=tr ...

  7. Spring Cloud 之 Feign

    新建Spring Boot工程,命名为feign 1.pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?& ...

  8. SpringCloud Feign对Hystrix(断路由)的支持

    第一步:首先开启Feign对Hystrix的支持,在properties文件中添加以下配置: feign.hystrix.enabled=true. 第二步:在上一篇Feign的基础上添加Hystri ...

  9. SpringCloud Feign使用详解

    添加依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...

  10. 工作随笔——自动重发的凶手--feign

    公司使用的feign(https://github.com/OpenFeign/feign)作为http客户端. 开发时debug后端程序,发现同一个请求会多次收到. 为了判断是谁在搞鬼,在客户端和服 ...

随机推荐

  1. 深度学习模型训练的过程理解(训练集、验证集、测试集、batch、iteration、epoch、单步预测、多步预测、kernels、学习率)

    呜呜呜呜,感谢大佬学弟给我讲干货. 本来是讨论项目的,后面就跑偏讲论文模型了. 解答了我一直以来的疑问: 数据放模型里训练的过程. 假设我们有一个数据集26304条数据,假设设置模型读入1000条,如 ...

  2. CSS – rem, em, px

    参考: 掘金 – 如何更愉快地使用em -- 别说你懂CSS相对单位 绝对值 vs 相对值 px, cm, mm 这些是绝对值. rem, em 是相对值. 绝对值就是最终的尺寸. 相对值的意思是它不 ...

  3. HEOI2024 题目转存

    赛时测试数据下载 wind xor wormhole maze timeline sleep 题解参考 [省选联考 2024] 季风 题目背景 生活在二维平面的小 X 准备拜访小 Y,但由于气候的变化 ...

  4. window10任务栏图标不见了(如何修复)

    1.按 Windows键+ R 2.写 %temp% 在其中,然后单击"确定". 3.删除其中的所有内容以清除临时文件. 4.重启

  5. iOS关于列表布局的几种实现方式小结

    最近在项目开发中,遇到了常见的列表布局样式,功能的要求是最多六行,动态展示.当时想到的方案是,抽象出一个cell,初始化六个标签,动态的控制显示和隐藏,这样功能上没有问题,就是代码有些冗余.请教了身边 ...

  6. Xcode 12 引用缺失包:libstdc++.tbd libstdc++.6.tbd libstdc++.6.0.9.tbd引发的一系列问题解析

    升级到xcode12后会有libstdc++.tbd libstdc++.6.tbd libstdc++.6.0.9.tbd 等库缺失的情况,并引发一些列的 Undefined symbols for ...

  7. yarn serve 不能开启vue项目 the project seem to require yarn but isnot install

    error: answer: 删除 yarn.lock 或者使用 npm run serve 替换 ; ps: yarn.lock 是锁定第三方包版本的文件:

  8. 使用 ref 获取另外组件的数据

  9. Excel488个函数一览

    目录: 常用函数 Web 函数 财务函数 查找和引用函数 多维数据集函数 工程函数 兼容性函数 逻辑函数 日期和时间函数 数据库函数 数学和三角函数 统计函数 文本函数 信息函数 与加载项一起安装的用 ...

  10. 常见APR攻击及其防护

    0x01 什么是ARP 地址解析协议--ARP:是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的 ...