2021-04-13

[SpringCloud教程]6. OpenFeign远程接口调用

OpenFeign是声明式方式定义Web服务的客户端(说白了就是将原有的url请求调用转化为本地方法调用一样方便快捷),并可通过集成Ribbon或Eureka实现负载均衡。

  • SpringCloud教程合集: https://www.cnblogs.com/spzmmd/tag/微服务教程/
  • 案例项目地址: https://gitee.com/spzmmd/spring-cloud-demo

集成

  • 在SpringCloud案例项目里建立新模块 ms-consumer-eureka-openfeign,并在父pom里声明,该模块pom.
<?
  • application.properties 配置如下
server.port=7001# Eurekaeureka.client.register-with-eureka=falseeureka.client.service-url.defaultZone=http://eureka6001:6001/eureka Feign 日志级别logging.level.com.spz.demo.scloud.consumer.openfeign.service.IEurekaProviderService=debug# Feign 超时配置openfeign.connectTimeoutMs=1000openfeign.readTimeoutMs=5000
  • 配置类OpenFeignConfiguration.java
package com.spz.demo.scloud.consumer.openfeign.config;import com.netflix.ribbon.Ribbon;import feign.Logger;import feign.Request;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * OpenFeign 配置 * @author spzmmd * @createTime 2021/04/12 */@Configurationpublic class OpenFeignConfiguration { /**  * 连接超时  * 单位: ms  */ @Value("${openfeign.connectTimeoutMs}") private int connectTimeoutMs; /**  * 读取超时  * 单位: ms  */ @Value("${openfeign.readTimeoutMs}") private int readTimeoutMs; /**  * 配置超时时间  * @return  */ @Bean public Request.Options options() {  return new Request.Options(connectTimeoutMs, readTimeoutMs); } /**  * 配置OpenFeign输出什么日志, 方便调试  * @return  */ @Bean public Logger.Level feignLoggerLevel() {  return Logger.Level.FULL; }}
  • 启动类 ConsumerOpenFeignApp.java
package com.spz.demo.scloud.consumer.openfeign;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.openfeign.EnableFeignClients;@EnableFeignClients@SpringBootApplicationpublic class ConsumerOpenFeignApp { public static void main(String[] args) {  SpringApplication.run(ConsumerOpenFeignApp.class, args); }}
  • 通过OpenFeign来实现微服务接口调用的方法是,将接口调用声明为一个个接口方法,如下代码
package com.spz.demo.scloud.consumer.openfeign.service;import com.spz.demo.scloud.common.core.bean.RestBean;import com.spz.demo.scloud.consumer.openfeign.config.OpenFeignConfiguration;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.stereotype.Component;import org.springframework.web.bind.annotation.GetMapping;/** * Eureka 服务提供者 接口 * 用于配置 Feign 接口 * @author spzmmd * @createTime 2021/04/12 */@Component@FeignClient(value = "MS-PROVIDER", configuration = OpenFeignConfiguration.class)public interface IEurekaProviderService { @GetMapping(value = "/projectInfo") public RestBean projectInfo();}
  • 测试用的控制器
package com.spz.demo.scloud.consumer.openfeign.controller;import com.spz.demo.scloud.common.core.bean.RestBean;import com.spz.demo.scloud.common.service.AppService;import com.spz.demo.scloud.consumer.openfeign.service.IEurekaProviderService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * 测试 openFeign * @author spzmmd * @createTime 2021/04/12 */@RestController@RequestMapping("/openFeign")public class OpenFeignTestController { // 使用OpenFeign,实现以接口调用的方式来进行网络请求 @Autowired private IEurekaProviderService eurekaProviderService; /**  * 服务远程调用测试 - 使用 openFeign  * @return  */ @RequestMapping("/projectInfo") public RestBean appServiceProjectInfo(){  RestBean restBean = eurekaProviderService.projectInfo();  return restBean; }}
  • 运行时,需要启动eureka-server(用于服务注册发现) 和两个ms-provider节点,用于测试OpenFeign方式调用微服务接口,而后启动ms-consumer-eureka-openfeign模块,不断访问如下地址:
{ "code": 2000, "message": "MS-PROVIDER:8001: (基于Eureka注册中心)", "data": null}{ "code": 2000, "message": "MS-PROVIDER:8002: (基于Eureka注册中心)", "data": null}

交流&联系

  • QQ群
    欢迎加入Java交流群(qq群号: 776241689 )

  • 欢迎关注公众号"后端技术学习分享"获取更多技术文章!
    PS:小到Java后端技术、计算机基础知识,大到微服务、Service Mesh、大数据等,都是本人研究的方向。我将定期在公众号中分享技术干货,希望以我一己之力,抛砖引玉,帮助朋友们提升技术能力,共同进步!
    在这里插入图片描述

  • 博客

    • 掘金
    • CSDN
    • 博客园

原创不易,转载请在开头著名文章来源和作者。如果我的文章对您有帮助,请点赞/收藏/关注鼓励支持一下吧❤❤❤❤❤❤









原文转载:http://www.shaoqun.com/a/682733.html

跨境电商:https://www.ikjzd.com/

亚马逊全球开店:https://www.ikjzd.com/w/1299

乐宝:https://www.ikjzd.com/w/2200


OpenFeign是声明式方式定义Web服务的客户端(说白了就是将原有的url请求调用转化为本地方法调用一样方便快捷),并可通过集成Ribbon或Eureka实现负载均衡。SpringCloud教程合集:https://www.cnblogs.com/spzmmd/tag/微服务教程/案例项目地址:https://gitee.com/spzmmd/spring-cloud-demo集成在Sprin
myyearbook:https://www.ikjzd.com/w/726
周宁:https://www.ikjzd.com/w/1647
mymall:https://www.ikjzd.com/w/1050
口述爱爱好爽细节过程 男朋友一晚上要我四五次:http://www.30bags.com/a/249878.html
爱爱时我喊小三名字 把老公羞跑:http://lady.shaoqun.com/a/271781.html
男友把弟弟女友当宝贝 那我算什么:http://www.30bags.com/m/a/252873.html

No comments:

Post a Comment