dubbo之上下文信息

上下文信息

上下文中存放的是当前调用过程中所需的环境信息。所有配置信息都将转换为 URL 的参数,参见 schema 配置参考手册 中的对应URL参数一列。

RpcContext 是一个 ThreadLocal 的临时状态记录器,当接收到 RPC 请求,或发起 RPC 请求时,RpcContext 的状态都会变化。比如:A 调 B,B 再调 C,则 B 机器上,在 B 调 C 之前,RpcContext 记录的是 A 调 B 的信息,在 B 调 C 之后,RpcContext 记录的是 B 调 C 的信息。

服务消费方

// 远程调用
xxxService.xxx();
// 本端是否为消费端,这里会返回true
boolean isConsumerSide = RpcContext.getContext().isConsumerSide();
// 获取最后一次调用的提供方IP地址
String serverIP = RpcContext.getContext().getRemoteHost();
// 获取当前服务配置信息,所有配置信息都将转换为URL的参数
String application = RpcContext.getContext().getUrl().getParameter("application");
// 注意:每发起RPC调用,上下文状态会变化
yyyService.yyy();

服务提供方

public class XxxServiceImpl implements XxxService {

    public void xxx() {
        // 本端是否为提供端,这里会返回true
        boolean isProviderSide = RpcContext.getContext().isProviderSide();
        // 获取调用方IP地址
        String clientIP = RpcContext.getContext().getRemoteHost();
        // 获取当前服务配置信息,所有配置信息都将转换为URL的参数
        String application = RpcContext.getContext().getUrl().getParameter("application");
        // 注意:每发起RPC调用,上下文状态会变化
        yyyService.yyy();
        // 此时本端变成消费端,这里会返回false
        boolean isProviderSide = RpcContext.getContext().isProviderSide();
    }
}
时间: 2024-10-13 18:42:06

dubbo之上下文信息的相关文章

NLog路由规则和上下文信息

NLog配置路由规则和上下文信息 rules: 规则节点 logger:一个路由规则 <rules> <!--<logger name="*" writeTo="console" />--> <logger name="*" minlevel="Debug" writeTo="debugger" /> <logger name="*"

学习领域驱动设计(二)之上下文映射图及架构

前一篇文章 :"学习领域驱动设计开篇"给大家主要了解了下领域驱动设计是什么!这篇文章主要介绍下上下文映射图及架构相关方面的知识. 1.上下文映射图 1.1上下文映射图为何如此重要 当项目中开始采用DDD时,首先你应该为当前的项目绘制一个上下文映射图,该图主要描述当前项目中的限界上下文之间的集成关系!而上下文映射图的作用就是帮助我们从解决方案空间的角度来看待问题.(限界上下文已在上篇文章中介绍了) U表示上游(Upstream).D表示下游(Downstream) 1.2绘制上下文映射图

8.python之上下文管理协议

使用上下文管理协议,有什么好处? 使用with语句的目的就是把代码块放入with中执行,with结束后,自动完成清理工作,无须手动干预. 在需要管理一些资源比如文件,网络连接和锁的编程环境中,可以在__exit__中定制自动释放资源的机制,你无须再去关系这个问题,这将大有用处. 之前所提到的with代码块,就是python的上下文管理操作,比如说通过python打开一个文件,就可以通过with代码块结合open去实现,通过这种方式打开的文件,执行了相应的操作后,无需我们手动去close文件,文件

python之上下文管理器

关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈python上下文管理器的使用. 自定义上下文管理器 python中最常用的上下文管理器就是文件的打开和关闭了. with open(filename,'r') as file: file.read() 原理 python上下文使用with触发,内部实现了__enter__和__exit__两个魔法方法. cla

Django之上下文处理器

上下文处理器是用来返回一些在全局模板中都可以使用的数据,比如登入后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象了. 步骤1:在APP内新建一个python文件(或者单独创建一个python包用来管理所有的上下文处理器) 步骤2:在python文件中定义个函数,只有一个参数(request),函数中处理完自己的逻辑后,把需要返回的数据通过字典的形式返回,如果没有数据返回就返回一个空字典. 步骤3:在setting中注册(TEMPLAT

python之上下文管理、redis的发布订阅

使用with打开文件的方式,是调用了上下文管理的功能 1 #打开文件的两种方法: 2 3 f = open('a.txt','r') 4 5 with open('a.txt','r') as f 6 7 实现使用with关闭socket 8 import contextlib 9 import socket 10 11 @contextlib.contextmanage 12 def Sock(ip,port): 13 socket = socket.socket() 14 socket.bi

CSS设计指南之上下文选择符

假定有如下场景:你想分别给article和aside中的段落文本,分别设置不同的字号.像这种"基于位置"变换标签样式的问题,可以用上下文选择符来解决. 1.普通的上下文选择符 格式:标签1 标签2 {声明} 标签2就是我们想要选择的目标,而且只有在标签1是其祖先元素(不一定是父元素)的情况下才会被选中. article p{color:Red;} 这个例子中的上下文选择符表明,只有是article后代的p元素才会应用后面的样式 2.子选择符 > 格式:标签1 > 标签2 {

.Net组件程序设计之上下文

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

flask之上下文管理

简单来说,falsk上下文管理可以分为三个阶段: 1.请求进来时,将请求鞋底的相关数据放入上下文管理中进行管理 2.在视图函数中,要去上下文管理中取值 3.请求响应之后,要将上下文管理中的数据清除 详细点来说: 1.请求刚进来,将request,session封装在RequestContext类中,app,g封装在AppContext类中,并通过LocalStack将requestcontext和appcontext放入Local类中 2.视图函数中,通过localproxy--->偏函数---