ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【spring cloud】feign组件的使用

2021-10-13 22:34:58  阅读:131  来源: 互联网

标签:feign 调用 spring 重试 client cloud


feign组件在spring cloud体系中主要负责方法的远程调用,有了它,调用其他应用的接口,不需要使用RestTemplate那么麻烦,在简单的配置后,可以直接将接口Autowired进来,直接调就好,很简单。这里主要讲下怎么简单的配置下feign。

  1. 引入依赖
    部分依赖如下所示:
    feign的依赖,
        <!--feign-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

被调用方提供的接口层依赖,

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>feign-client-intf</artifactId>
            <version>${project.version}</version>
        </dependency>
  1. 启动类加入注解
    为启动类加上@EnableFeignClients,
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignConsumerApp {

    public static void main(String[] args) {
        new SpringApplicationBuilder(FeignConsumerApp.class)
                .web(WebApplicationType.SERVLET)
                .run(args);
    }
}
  1. 继承被调用方接口,指定调用的服务,实现feign客户端
    注意,这里的服务名,应是eureka上注册的名称
@FeignClient(name = "feign-client")
public interface MyService extends IService{
}
  1. 也可以加入自己需要的配置
    如超时等配置,
    部分配置如下所示,
spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: feign-consumer-advanced

server:
  port: 40001

eureka:
  client:
    serviceUrl:
      #注册中心地址
      defaultZone: http://localhost:20000/eureka/

feign-client:
  ribbon:
    #每台机器最大的重试次数
    MaxAutoRetries: 0
    #可以再重试几台机器
    MaxAutoRetriesNextServer: 1
    #连接超时时间(ms)
    ConnectTimeout: 1000
    #业务处理超时(ms)
    ReadTimeout: 2000
    #在所有类型的HTTP Method进行重试
    #默认为false,仅在不改动数据(查)的情况下进行重试
    #为true时,要特别注意幂等问题
    OkToRetryOnAllOperations: true
  1. 将接口注入,实现远程调用
    @Autowired
    private MyService myService;

标签:feign,调用,spring,重试,client,cloud
来源: https://blog.csdn.net/gengzhihao10/article/details/120753476

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有