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

网友投稿 351 2022-07-22


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

Feign超时 yml文件配置

ribbon:

# #指建立连接后从服务端读取到可用资源所用的时间

ReadTimeOut: 10000

#建立连接所用的时间,适用于网络状况正常的情况下,两端连接所需要的时间

ConnectTimeout: 5000

Feihttp://gn用法和基本配置

SpringBoot集成Feign在不使用注册中心实现模块之间的调用

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

上代码:

首先说下我的模块结构

test1是根模块用于对子模块maven坐标的版本控制管理其pom.xml如下:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.person

test1

pom

1.0-SNAPSHOT

provider

consumer

pojo

org.springframework.boot

spring-boot-starter-parent

2.1.0.RELEASE

UTF-8

UTF-8

1.8

Greenwich.RELEASE

com.person

pojo

1.0-SNAPSHOT

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-starter-web

2.1.1.RELEASE

org.springframework.cloud

spring-cloud-starter-openfeign

2.1.1.RELEASE

org.projectlombok

lombok

1.18.10

provided

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.person

test1

pom

1.0-SNAPSHOT

provider

consumer

pojo

org.springframework.boot

spring-boot-starter-parent

2.1.0.RELEASE

UTF-8

UTF-8

1.8

Greenwich.RELEASE

com.person

pojo

1.0-SNAPSHOT

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-starter-web

2.1.1.RELEASE

org.springframework.cloud

spring-cloud-starter-openfeign

2.1.1.RELEASE

org.projectlombok

lombok

1.18.10

provided

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

首先在test1模块下新建pojo模块

pojo模块的pom.xml:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

pojo

org.projectlombok

lombok

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

pojo

org.projectlombok

lombok

在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如下:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

consumer

com.person

pojo

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.boot

spring-boot-starter-web

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

consumer

com.person

pojo

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.boot

spring-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 {

@Autowired

private GoodsFeignClient goodsFeignClient;

@GetMapping("/findone/{id}")

public Goods findOnebyId(@PathVariable("id") String id) {

return goodsFeignClient.findOnebyId(id);

}

}

接下来新建provider模块

provider的yml文件:

server:

port: 8011

其pom.xml坐标:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

provider

org.projectlombok

lombok

com.person

pojo

org.springframework.boot

spring-boot-starter-web

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

test1

com.person

1.0-SNAPSHOT

4.0.0

provider

org.projectlombok

lombok

com.person

pojo

org.springframework.boot

spring-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回车

显示的是provider的接口返回的数据,说明feign调用成功。关于feign还有很多很多牛x的用法,若有需要可以在官网或者其他地方搜索,我展示的只是适合新手入门上手。


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

上一篇:JavaWeb三大组件之一的Filter详解
下一篇:SpringBoot Test 多线程报错的根本原因(dataSource already closed)
相关文章

 发表评论

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