zoukankan      html  css  js  c++  java
  • Feign拦截器应用 (F版)

    Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态)。使用Spring Cloud开发人员可以快速地完成实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作

    Feign

    使用Spring Cloud时,通常会用 Feign 来调用远程服务,比如远程服务的权限验证,需要在 header 中传递 token之类的。在方法中显示传递又过于麻烦了,这时候就可以考虑使用 Feign 提供的RequestInterceptor 接口,只要实现了该接口,那么Feign每次做远程调用之前都可以被它拦截下来在进行包装

    Try

    准备三个工程,分别是 eureka-serverorder-serverproduct-server

    Eureka Server

    详情参考第一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码

    Product Server

    一个普通的 Eureka Client 即可,详情参考上一章,或从文末的 GITHUB 链接获取对应篇幅的完整代码

    唯一变动

    为了体现 RequestInterceptor 生效,将返回的消息做了下调整

    1
    2
    3
    4
    @GetMapping("/products/{id}")
    public String query(@PathVariable Long id, @RequestHeader String token) {
    return id + ":Spring Boot... token = " + token;
    }

    Order Server

    在上一章的基础之上做了扩展,创建一个 FeignInterceptor 实现 RequestInterceptor 的接口,这样就可以将需要传递的内容设置到 RequestTemplate 中,然后在服务的另外一端就可以通过 request.getHeader("key") 的方式进行获取了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Configuration
    public class FeignInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
    requestTemplate.header("token", "10086");
    }

    }

    流程图

    画图工具:https://www.processon.com/

    流程图流程图

  • 相关阅读:
    jmeter怎么衡量tps的值
    QPS、TPS、并发用户数、吞吐量关系
    PPAPI插件开发指南
    WebRTC手记之WebRtcVideoEngine2模块
    WebRTC手记Channel概念
    WebRTC手记之本地音频采集
    WebRTC手记之本地视频采集
    WebRTC手记之框架与接口
    WebRTC手记之初探
    Chromium的GPU进程启动流程
  • 原文地址:https://www.cnblogs.com/lywJ/p/10715666.html
Copyright © 2011-2022 走看看