Feign超时|Feign超时 在yml文件里的配置方式

目录

  • Feign超时 yml文件配置
  • Feign用法和基本配置
    • 首先说下我的模块结构
    • 首先在test1模块下新建pojo模块
    • 首先在consumer的模块下新建feign调用类
    • 接下来新建provider模块

Feign超时 yml文件配置
ribbon:##指建立连接后从服务端读取到可用资源所用的时间ReadTimeOut: 10000#建立连接所用的时间,适用于网络状况正常的情况下,两端连接所需要的时间ConnectTimeout: 5000


Feign用法和基本配置 SpringBoot集成Feign在不使用注册中心实现模块之间的调用
? 今天就来说下怎么使用Fegin在不使用注册中心的情况下进行模块之间的调用。原因是:在项目小的情况下,而且还必须要调用其他模块的接口,那么这个时候就要用fegin了,当然还有其他的方法,但我在这里只说这一种简单的方法。
上代码:

首先说下我的模块结构
Feign超时|Feign超时 在yml文件里的配置方式
文章图片

test1是根模块用于对子模块maven坐标的版本控制管理其pom.xml如下:
4.0.0com.persontest1【Feign超时|Feign超时 在yml文件里的配置方式】pom1.0-SNAPSHOTproviderconsumerpojoorg.springframework.bootspring-boot-starter-parent2.1.0.RELEASEUTF-8UTF-81.8Greenwich.RELEASEcom.personpojo1.0-SNAPSHOTorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportorg.springframework.bootspring-boot-starter-web2.1.1.RELEASEorg.springframework.cloudspring-cloud-starter-openfeign2.1.1.RELEASEorg.projectlomboklombok1.18.10provided

紧接着在test1模块下新建两个模块分别为consumer,provider和pojo,其中consumer使用Feign调用provider模块的接口,pojo模块放实体类

首先在test1模块下新建pojo模块
pojo模块的pom.xml:
test1com.person1.0-SNAPSHOT4.0.0pojoorg.projectlomboklombok

在pojo模块下新建Goods实体类供其他模块使用:
package com.person.pojo.consumer; import lombok.*; import javax.validation.constraints.NotNull; import java.io.Serializable; @Setter@Getter@AllArgsConstructor@NoArgsConstructor@Builder(toBuilder = true)public class Goods implements Serializable {private static final long serialVersionUID = 1L; @NotNull(message = "id不能为空")private String id; private String name; private String price; private String colour; }

consumer的yml文件:
server:port: 8012

consumer的pom.xml如下:
test1com.person1.0-SNAPSHOT4.0.0consumercom.personpojoorg.springframework.cloudspring-cloud-starter-openfeignorg.springframework.bootspring-boot-starter-web


首先在consumer的模块下新建feign调用类
package com.person.feign; import com.person.pojo.consumer.Goods; 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(name = "provider",url = "http://localhost:8011")@RequestMapping("/person")public interface GoodsFeignClient {@GetMapping("/findone/{id}")public Goods findOnebyId(@PathVariable("id") String id); }

上面代码所示 url代表想要调用的模块的前缀因为我的provider模块的端口是8011因此http://localhost:8011就是我的provider前缀,下面的请求路径“/person/findone/{id}”指的是我的provider模块接口路径
下面在consumer模块下新建controller方法:
package com.person.controller; import com.person.feign.GoodsFeignClient; import com.person.pojo.consumer.Goods; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping("/order")public class OrderController {@Autowiredprivate GoodsFeignClient goodsFeignClient; @GetMapping("/findone/{id}")public Goods findOnebyId(@PathVariable("id") String id) {return goodsFeignClient.findOnebyId(id); }}


接下来新建provider模块
provider的yml文件:
server:port: 8011

其pom.xml坐标:
test1com.person1.0-SNAPSHOT4.0.0providerorg.projectlomboklombokcom.personpojoorg.springframework.bootspring-boot-starter-web

然后在provider 中新建controller:
package com.person.controller; import com.person.pojo.consumer.Goods; import com.person.service.GoodsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * 服务提供方 */@RestController@RequestMapping("/person")public class GoodsController {@GetMapping("/findone/{id}")public Goods findOne(@PathVariable("id") String id) {return new Goods("1","红苹果","8888","红色"); }}

这个时候在浏览器里面输入http://localhost:8012/order/findone/12回车
Feign超时|Feign超时 在yml文件里的配置方式
文章图片

显示的是provider的接口返回的数据,说明feign调用成功。关于feign还有很多很多牛x的用法,若有需要可以在官网或者其他地方搜索,我展示的只是适合新手入门上手。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读