dubbo隐式传参

dubbo隐式传参

1、预备知识

说明:以下只使用于使用 InternalThread 的情况,使用Thread的不建议使用InternalThreadLocal

1. InternalThreadLocalMap

常用属性

Object[] indexedVariables: 对象数据用于数据存储;

static final AtomicInteger NEXT_INDEX:用于记录InternalThreadLocal实例位于数组中的位置。

2. InternalThread

常用属性

InternalThreadLocalMap threadLocalMap : 用于存储当前线程中的InternalThreadLocal实例内容。

3. InternalThreadLocal

一个类似ThreadLocal的类。

InternalThreadLocal实例的index用于判断线程内 InternalThreadLocalMap 属性的内部数组的位置。

2、RpcContext 类

全类名:org.apache.dubbo.rpc.RpcContext ;

作用:一个线程共享数据的处理类,使用静态的**InternalThreadLocal**的实例属性 LOCAL 存储入参内容, SERVER_LOCAL存储出参内容。

3、ConsumerContextFilter类

全类名:org.apache.dubbo.rpc.filter.ConsumerContextFilter

作用:

a. 服务作为消费者调用其他生产者时,会执行其**invoke(Invoker<> invoker, Invocation invocation)**方法,调用RpcContext设置调用地址等信息,remove当前线程的SERVER_LOCAL实例对应的map,处理结束后remove当前线程的LOCAL实例对应的map。

b. 内部类ConsumerContextListener负责将传回来的隐性参数添加到当前线程的LOCAL实例对应的map中。

3、ContextFilter 类

全类名: org.apache.dubbo.rpc.filter.ContextFilter

作用:

a. 服务作为生产者被调用时会执行其**invoke(Invoker<> invoker, Invocation invocation)**方法,接收隐性参数并设置到当前服务的线程的InternalThreadLocalMap中。

b. 内部类ContextListener负责将传递过来的map添加到当前线程的LOCAL实例对应的map中。

4、目前公司方案

1. 自定义ConsumerFilter类

全类名:com.casstime.saas.dubbo.filter.ConsumerFilter extends ListenableFilter

作用:invoke(Invoker<> invoker, Invocation invocation)方法中实现session、crm session、链路跟踪和客户端信息 传递,从而实现登录信息隐性传递。

内部类:ConsumerResultListener 暂未使用,部分代码注释

2. 自定义ProviderFilter类

全类名:com.casstime.saas.dubbo.filter.ProviderFilter extends ListenableFilter

作用:invoke(Invoker<> invoker, Invocation invocation) 方法中实现 session、crm session、链路跟踪和客户端信息 接收,从而获取来自消费者的用户信息。

内部类:ProviderResultListener 暂未使用,部分代码已注释

3. 自定义DubboConfig类

全类名:com.casstime.saas.dubbo.config.DubboConfig

作用:

a. 将上述两个自定义类配置到配置文件com.alibaba.dubbo.rpc.Filter后,采用此配置类 实例化 到bean容器中。

b. 定义了dubbo生产者和消费者的xml文件路径。

c. 其他(暂未了解)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值