微服务——http客户端Feign

这篇具有很好参考价值的文章主要介绍了微服务——http客户端Feign。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Restemplate方式调用存在的问题

Feign的介绍

基于Feign远程调用

Feign自定义配置

修改日志方式一(基于配置文件)

修改日志方式二(基于java代码)

Feign的性能优化

连接池使用方法 

Feign_最佳实践分析 

 方式一:

方式二

 实现Feign最佳实践(方式二)

 两种解决方案


Restemplate方式调用存在的问题

微服务——http客户端Feign,微服务,微服务,http,架构

Feign的介绍

就像早期的事务,需要手动的开启事务,提交事务,有了spring之后声明式事务只需要在配置文件里面定义好规则即可。

声明式http也是一样,提前定义好发送请求需要的信息,剩下的Feign完成。

微服务——http客户端Feign,微服务,微服务,http,架构

基于Feign远程调用

定义和使用Feign客户端

微服务——http客户端Feign,微服务,微服务,http,架构

 微服务——http客户端Feign,微服务,微服务,http,架构

在这里刚好用到了所有在使用Restemplate发送请求时用到的数据。

微服务——http客户端Feign,微服务,微服务,http,架构

业务代码如下

@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private UserClient userClient;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2.利用Feign远程调用
        User user = userClient.findById(order.getUserId());
        //3.封装user到order
        order.setUser(user);
        // 4.返回
        return order;
    }
//    @Autowired
//    private RestTemplate restTemplate;
//
//    public Order queryOrderById(Long orderId) {
//        // 1.查询订单
//        Order order = orderMapper.findById(orderId);
//        //2.利用RestTemplate发起http请求,查询用户
//        String url="http://userserver/user/"+order.getUserId();
//        User user = restTemplate.getForObject(url, User.class);
//        //3.封装user到order
//        order.setUser(user);
//        // 4.返回
//        return order;
//    }
}

 小问题_:如果项目里面引入了下面这注解就一定要去配置bootstrap.yml获取nacos上的配置文件,不然项目会一直报错。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

并且Feign里面自带一个ribbon,实现了负载均衡。

Feign自定义配置

微服务——http客户端Feign,微服务,微服务,http,架构

修改日志方式一(基于配置文件)

微服务——http客户端Feign,微服务,微服务,http,架构

没修改前:

微服务——http客户端Feign,微服务,微服务,http,架构 修改后:  输出日志瞬间多了很多

微服务——http客户端Feign,微服务,微服务,http,架构

修改日志方式二(基于java代码)

微服务——http客户端Feign,微服务,微服务,http,架构

微服务——http客户端Feign,微服务,微服务,http,架构

Feign的性能优化

有了连接池可以减少性能损耗

微服务——http客户端Feign,微服务,微服务,http,架构

连接池使用方法 

微服务——http客户端Feign,微服务,微服务,http,架构

 微服务——http客户端Feign,微服务,微服务,http,架构

Feign_最佳实践分析 

 方式一:

微服务——http客户端Feign,微服务,微服务,http,架构

左下面这个消费者中的代码就是用注解声明远程调用的一些信息,用于发送请求到提供者中去。

右下面换这个提供者中的代码就是用于接收的类。

两个方法除了方法名不同,其余都相同。这两个是必须一样,不是巧合。

微服务——http客户端Feign,微服务,微服务,http,架构微服务——http客户端Feign,微服务,微服务,http,架构

 微服务——http客户端Feign,微服务,微服务,http,架构

  spring官方有所一般情况下不推荐服务端和客户端共享接口,会造成紧耦合。

方式二

将对同一个服务同一些接口的FeignClinent抽取出来形成一个独立模块供所有的消费者使用。

微服务——http客户端Feign,微服务,微服务,http,架构

 实现Feign最佳实践(方式二)

微服务——http客户端Feign,微服务,微服务,http,架构

 按照上面方法测试会有一个报错

 'cn.itcast.feign.clients.UserClient' that could not be found.

不是编译报错,而是springIOC容器里面没有这个对象,无法实现自动注入。

这是因为下面这个接口原本有@FeignClient这个注解,spring扫描到了这个注解就会给该接口创建对象。现在因为不在启动类所在包里面了,扫描不到了。微服务——http客户端Feign,微服务,微服务,http,架构

 两种解决方案

微服务——http客户端Feign,微服务,微服务,http,架构

 推荐使用第二种,用到什么就指定什么。文章来源地址https://www.toymoban.com/news/detail-610609.html

到了这里,关于微服务——http客户端Feign的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 十二、Feign客户端整合Hystrix服务保护

    目录 1、项目pom文件中引入feign客户端依赖 2、编写feign客户端接口,并配置fallback回调方法的类 3、编写controller,使用feign客户端进行RPC远程过程调用

    2024年02月05日
    浏览(26)
  • 【Spring Cloud】如何把Feign默认的HTTP客户端URLConnection更换成支持连接池的Apache HttpClient或OKHttp

    本次示例代码的文件结构如下图所示。 Feign 发送 HTTP 请求时,底层会使用到别的客户端。下面列出常用的 3 种 HTTP 客户端。 HTTP客户端 特点 URLConnection Feign 的默认实现,不支持连接池 Apache HttpClient 支持连接池 OKHttp 支持连接池 其中, URLConnection 是 Feign 默认使用的 HTTP 客户端

    2024年02月14日
    浏览(36)
  • 微服务架构,客户端如何catch服务端的异常?

    在微服务架构或者分布式系统中,客户端如何捕捉服务端的异常? 这里说的客户端指调用方、服务端指被调用方,它们通常运行在不同的进程之中,这些进程可能运行在同一台服务器,也可能运行在不同的服务器,甚至不同的数据机房;其使用的技术栈可能相同,也可能存在

    2024年03月09日
    浏览(33)
  • Nginx HTTP/3服务器-客户端环境搭建

    一、 NGINX 服务器介绍: NGINX是一个高性能的开源Web服务器,也可用作反向代理服务器、负载均衡器和HTTP缓存。它由俄罗斯的程序员Igor Sysoev创建,并于2004年首次公开发布。NGINX的设计重点是高性能、高并发和低内存消耗,使其成为了现代Web架构中的关键组件之一。 NGINX的一些

    2024年03月11日
    浏览(47)
  • 使用HTTP/2实现服务端主动推送消息给客户端

    77. 使用HTTP/2实现服务端主动推送消息给客户端 HTTP/2 协议的服务器主动推送机制是通过服务器在接收到客户端请求后,主动向客户端推送相关资源的方式来实现的。下面将详细解释如何在服务器端和客户端实现 HTTP/2 的服务器主动推送,并给出相应的代码示例。 客户端实现:

    2024年02月11日
    浏览(45)
  • java代码构建简单http服务器和客户端

    初识http a、超文本传输 、应用层的面向对象的协议,概念介绍网上资源一大堆,关键是基于TCP/IP通信协议来传递数据。 b、一开始接触web项目,都是先接触的servlet,tomcat服务器默认实现的一套http规范,提供了基础服务和组件环境,直接拿到请求、构建正文、响应客户端 然而

    2024年02月10日
    浏览(35)
  • 使用Go语言的HTTP客户端和服务器

    使用Go语言进行HTTP客户端和服务器开发是一种高效且强大的方式。Go语言的标准库提供了对HTTP协议的全面支持,使得创建HTTP客户端和服务器变得简单。 首先,让我们来看一下如何创建一个简单的HTTP服务器。在Go中,可以使用 net/http 包来创建HTTP服务器。以下是一个简单的示例

    2024年01月16日
    浏览(37)
  • Netty理论与实践(二) 创建http客户端 服务端

    1. 使用echo服务器模拟http 通过上一篇文章中的echo服务器程序来模拟一次HTTP请求。 接收消息的代码如下: 我们通过postman直接访问echo服务器: 请求成功,echo服务器接收到了本次HTTP请求,控制台打印内容如下: 上面的原理很容易理解,postman通过tcp建立与服务器localhost:8001的连

    2024年02月16日
    浏览(23)
  • HTTP介绍 原理 消息结构 客户端请求 服务器响应 HTTP状态码

    HTTP协议 是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(www.world wide web)服务器传输超文本到本地浏览器的传送协议 HTTP 是基于TCP/IP(三次握手,四次挥手)通信协议来传输数据(HTML文件,图片文件,查询结果等) TCP:可靠的,丢包重传 UTP:不可靠的,直播,

    2024年02月05日
    浏览(44)
  • linux搭建http源【服务端和客户端详细说明】

    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 [root@master ~]# 关闭防火墙和selinux firewall的话,直接 systemctl stop firewalld 即可 如果使用的是iptables,则吧firewalld替换成iptables [root@master ~]# systemctl is-active firewalld active [root@master ~]# [root@master ~]# systemctl stop firewalld [root@master ~]# [root@m

    2024年04月13日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包