远程调用(OpenFeign)

这篇具有很好参考价值的文章主要介绍了远程调用(OpenFeign)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

远程调用

       何为远程调用?例如:单体服务时,A模块的功能涉及到引用B模块的功能,那我们需要在A模块中注入B模块的相关服务类并调用其方法;那么同样的逻辑在微服务体系下,就会变成了A服务的功能需要调用B服务的功能,这就形成了服务间调用,也称为远程调用。

        目前来说,微服务体系已经相当成熟,SpringCloud体系中也提供了完善的、便捷的工具。Feign 和 OpenFeign。 本文主要以 OpenFeign 为主,目前主流也推荐使用OpenFeign.

Feign 和 OpenFeign

         OpenFeign 组件的前身是 Netflix Feign 项目,它最早是作为 Netflix OSS 项目的一部分,由 Netflix 公司开发。后来 Feign 项目被贡献给了开源组织,于是才有了我们今天使用的 Spring Cloud OpenFeign 组件。

         Feign 和 OpenFeign 有很多大同小异之处,不同的是 OpenFeign 支持 MVC 注解。可以认为 OpenFeign 为 Feign 的增强版。

简单总结下 OpenFeign 能用来做什么:文章来源地址https://www.toymoban.com/news/detail-791507.html

  • OpenFeign 是声明式的 HTTP 客户端,让远程调用更简单。
  • 提供了HTTP请求的模板,编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息
  • 整合了Ribbon(负载均衡组件)和 Hystix(服务熔断组件),不需要显示使用这两个组件
  • Spring Cloud Feign 在 Netflix Feign的基础上扩展了对SpringMVC注解的支持

快速使用

引入依赖

<!-- openfeign 远程调用 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

代码编写

接口类  

  •   使用 注解 @FeignClient,将服务间调用 封装为  MVC 中的服务类 供调用者使用
package com.learning.springcloud.order.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * name; 服务名
 * path: 调用REST接口的根路径
 */
@FeignClient(name = "stock-service", path = "/stock")
public interface StockFeignService {

//    @RestController
//    @RequestMapping("/stock")
//    public class StockController {
//
//        @Value("${server.port}")
//        String serverPort;
//
//        @RequestMapping("/reduct")
//        public Object reductStock() {
//            System.out.println(serverPort + ":扣减库存成功了");
//            return "reduct stock success. stock service port:" + serverPort;
//        }
//    }

    @RequestMapping("/reduct")
    String reductStock();  // 真实返回的类型是啥  feign接口就是啥类型 这里是String
}

调用者    

  • 上述步骤已将 服务间调用进行MVC服务类封装
  • 使用的地方则类似MVC,直接@Autowired注入使用即可
package com.learning.springcloud.order.controller;


import com.learning.springcloud.order.feign.StockFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    StockFeignService stockFeignService;

    @RequestMapping("/add")
    public Object addOrder() {
        // System.out.println("下单成功!!!");
        // String templateForObject = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        System.out.println("openFeign 下单成功!!!");
        String reductedStock = stockFeignService.reductStock();
        return "hi, order" + "; " + reductedStock;
    }
}

启动类增加注解

  • 切记启动类上得增加注解 @EnableFeignClients
package com.learning.springcloud;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class);
    }
}

到了这里,关于远程调用(OpenFeign)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】Spring Cloud Alibaba 之 Feign 远程调用 实战

    在分布式领域中,一个系统由很多服务组成,不同的服务由各自的进程单独负责。因此,远程调用在分布式通信中尤为重要。 远程调用可分如下两类: 本地过程调用(Local Procedure Call,LPC) ,是指同一台机器上运行的不同进程之间的互相通信,即在多进程操作系统中,运行

    2023年04月09日
    浏览(49)
  • Spring Cloud Day2 Nacos配置管理、Feign远程调用与Gateway服务网关

    Nacos除了可以做注册中心,同样可以做配置管理来使用。 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。 Nacos一方面可以将配置集中管理,另一方可以

    2024年02月10日
    浏览(66)
  • OpenFeign远程调用

    先来看我们以前利用RestTemplate发起远程调用的代码: 存在下面的问题: •代码可读性差,编程体验不统一 •参数复杂URL难以维护 Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。 F

    2024年01月24日
    浏览(35)
  • 远程调用(OpenFeign)

           何为远程调用?例如:单体服务时,A模块的功能涉及到引用B模块的功能,那我们需要在A模块中注入B模块的相关服务类并调用其方法;那么同样的逻辑在微服务体系下,就会变成了A服务的功能需要调用B服务的功能,这就形成了服务间调用,也称为远程调用。      

    2024年01月15日
    浏览(39)
  • 微服务 、Spring Cloud 、OpenFeign的使用

    OpenFeign 提供了一种 声明式的远程调用接口 。 目的是为了简易HTTP客户端的编写。 之前在 笔记中介绍了 Ribbon + RestTemplate 的使用。Ribbon + RestTemplate 是多http请求做了封装处理,形成了模版化的调用。但是在实际的开发中,由于对服务依赖的调用可能不止一处,往往一个接口被

    2024年02月10日
    浏览(46)
  • 微服务远程调用openFeign整合

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 微服务探索之旅 ✨特色专栏: MySQL学习 🥭本文内容:微服务远程调用openFeign整合 🖥️个人小站 :个人博客,欢迎大家访问 📚个人知识库:

    2024年02月09日
    浏览(40)
  • 【spring Cloud】微服务通信的三种方式RestTemplate、Feign远程调用与Dubbo的使用

    目录 一、通过RestTemplate调用微服务 二、通过Feign远程调用 三、Dubbo  分布式中的远程调用大概分为两种 RESTful接口  REST,即Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构。 每一个URI代表一种资源; 客户端和服务器之间,传递这种资源的某种

    2024年04月11日
    浏览(48)
  • 【Spring Cloud】基于 Feign 实现远程调用,深入探索 Feign 的自定义配置、性能优化以及最佳实践方案

    在微服务架构中,服务之间的通信是至关重要的,而远程调用则成为实现这种通信的一种常见方式。在 Java 中,使用 RestTemplate 是一种传统的远程调用方式,但它存在一些问题,如代码可读性差、编程体验不一致以及参数复杂URL难以维护等。 在本文中,我们将探讨如何通过使

    2024年02月04日
    浏览(54)
  • Spring Cloud ( openFeign 服务发现、配置、公共client抽取 )

    本章目录: openFeign的引出 快速入门 引入依赖 添加@EnableFeignClients注解 编写FeignClient接口 使用FeignClient中定义的方法代替RestTemplate 日志配置 连接池配置 公共client抽取 先来看我们之前服务通信使用的方法: 我们调用RestTemplate的getObject并手写url来完成服务调用,这样做的缺点是

    2023年04月08日
    浏览(45)
  • Spring Cloud Alibaba 同时兼容dubbo与openfeign

    dubbo与springcloud都可以单独作为微服务治理框架在生产中进行使用,但使用过springcloud的同学大概了解到,springcloud生态的相关组件这些年已经逐步停更,这就导致在服务架构演进过程中的迭代断层,以至于一些新的技术组件引入困难重重,于是在国内的市场上就有了升级版的

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包