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. 掌握 C++17:结构化绑定与拷贝消除的妙用

    C++17 特性示例 1. 结构化绑定(Structured Binding) 结构化绑定允许你用一个对象的元素或成员同时实例化多个实体. 结构化绑定允许你在声明变量的同时解构一个复合类型的数据结构( ...

  2. @vue/cli typescript插件使用指南

    步骤 使用 yarn add 安装 @vue/cli-service 对应版本的 @vue/cli-plugin-typescript 例如:"@vue/cli-service": ...

  3. 七、Scrapy框架-案例1

    1. 豆瓣民谣Top排名爬取 1.1 构建scrapy项目 安装Scrapy库 pip install scrapy 创建Scrapy项目 通过cmd进入命令窗口,执行命令scrapy startpr ...

  4. [namespace hdk] Balanced_tree 整合

    代码 #include<bits/stdc++.h> using namespace std; namespace hdk{ namespace balanced_tree{ const ...

  5. ftrace options 中的irq-info

    /sys/kernel/debug/tracing/options/irq_info 是 ftrace 中的一个选项,用于启用或禁用有关中断的详细信息的跟踪. options/irq_info 的具体 ...

  6. USB 逻辑分析仪分析丢包怎么分析(lecroy USB 逻辑分析仪)

    使用 LeCroy USB 逻辑分析仪分析 USB 数据传输中的丢包现象,通常涉及以下步骤: 1. 设置触发条件 在 LeCroy USB 逻辑分析仪中,设置适当的触发条件来捕获数据包丢失的场景.常见 ...

  7. python中队列deque的使用

    队列,堆栈是程序开发中常用的两种数据存储模型.python中队列怎么运用呢?以下内容介绍了队列的使用和队列的函数. from collections import deque q = deque() ...

  8. 两小时学会使用dubbo(直接API、spring、注解、springboot)

    最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式.高性能.透明化 ...

  9. 容器虚拟化平台 KSV 1.5 发布:部署更便捷,适配更多信创需求!

    报告!我们又迎来了一次重磅更新: 近日,由青云科技打造的轻量化虚拟机管理平台--KSV 容器虚拟化 1.5 版本正式发布! KSV 1.5 好在什么地方?逐个来解释 新增基于模板创建虚拟机.克隆虚拟机 ...

  10. AI实战篇:Spring AI + 混元 手把手带你实现企业级稳定可部署的AI业务智能体

    前言 在之前的内容中,我们详细讲解了Spring AI的基础用法及其底层原理.如果还有小伙伴对此感到困惑,欢迎参考下面这篇文章,深入学习并进一步掌握相关知识:https://www.cnblogs.c ...