广州购物网站建设,在线解压网站,软件开发工程师厉害吗,五大建设的主要内容OpenFeign简介
OpenFeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指#xff0c;就像调用本地方法一样调用远程方法#xff0c;无需感知操作远程http请求。
OpenFeign和Feign的区别
Feign是Spring Cloud组件中一个轻量级RESTful的HT…OpenFeign简介
OpenFeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指就像调用本地方法一样调用远程方法无需感知操作远程http请求。
OpenFeign和Feign的区别
Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端Feign内置了Ribbon用来做客户端负载均衡去调用服务注册中心的服务。
OpenFeign 是 Spring Cloud 对 Feign 的二次封装它具有 Feign 的所有功能并在 Feign 的基础上增加了对 Spring MVC 注解的支持例如 RequestMapping、GetMapping 和 PostMapping 等。
OpenFeign使用
创建一个父项目引入pom文件通过dependencyManagement统一管理依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.parent/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo/namedescriptionDemo project for Spring Boot/descriptionpropertiesspring.boot.version2.7.4/spring.boot.versionspring-cloud.version2021.0.3/spring-cloud.versionspring-cloud-alibaba.version2021.0.1.0/spring-cloud-alibaba.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring.boot.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement/project
创建服务提供方项目模块引入pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.parent/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/version/parentgroupIdcom/groupIdartifactIdprovider/artifactIdversion0.0.1-SNAPSHOT/versionnameprovider/namedescriptionDemo project for Spring Boot/descriptiondependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency/dependencies
/project
bootstrap.yaml配置
server:port: 8081spring:application:name: providecloud:nacos:discovery:server-addr: localhost:8848namespace: 6ce494ed-79a0-4c58-addf-cf66aa8f32b8config:server-addr: localhost:8848file-extension: yamlnamespace: 6ce494ed-79a0-4c58-addf-cf66aa8f32b8profiles:active: dev
启动类
SpringBootApplication
EnableDiscoveryClient
public class ProvideApplication {public static void main(String[] args) {SpringApplication.run(ProvideApplication.class, args);}
}提供接口
RestController
public class TestController {Value(${version})private String version;GetMapping(/test)public String test() {return version;}
}创建服务消费方项目模块引入pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.parent/groupIdartifactIddemo/artifactIdversion0.0.1-SNAPSHOT/version/parentgroupIdcom/groupIdartifactIdconsumer/artifactIdversion0.0.1-SNAPSHOT/versionnameconsumer/namedescriptionDemo project for Spring Boot/descriptiondependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependencies
/project
bootstrap.yaml配置
server:port: 8082spring:application:name: consumercloud:nacos:discovery:server-addr: localhost:8848namespace: 6ce494ed-79a0-4c58-addf-cf66aa8f32b8config:server-addr: localhost:8848file-extension: yamlnamespace: 6ce494ed-79a0-4c58-addf-cf66aa8f32b8profiles:active: dev
启动类
SpringBootApplication
EnableFeignClients(com.consumer.feign)
EnableDiscoveryClient
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}
}声明feign接口name/value属性这两个的作用是一样的指定的是调用服务的微服务名称互为对方的别名。url属性指定调用服务的全路径经常用于本地测试。如果同时指定name/value和url属性则以url属性为准name/value属性指定的值便当做客户端的名称。
FeignClient(value provide)
public interface TestFeign {GetMapping(/test)String test();
}外部调用
RestController
public class TestController {Autowiredprivate TestFeign testFeign;GetMapping(/consumer/test)public String test() {return testFeign.test();}
}启动本地nacos、provide、consumer服务
访问http://localhost:8082/consumer/test OpenFeign超时时间设置
默认不生效连接超时时间10秒、读超时时间60秒源码在feign.Request.Options#Options()这个方法中 public Options() {this(10, TimeUnit.SECONDS, 60, TimeUnit.SECONDS, true);}超时时间配置
feign:client:config:## default设置的全局超时时间指定服务名称可以设置单个服务的超时时间default:connectTimeout: 5000readTimeout: 5000S## 为serviceA这个服务单独配置超时时间serviceA:connectTimeout: 10000readTimeout: 10000