上下文信息 RpcContext
生活随笔
收集整理的這篇文章主要介紹了
上下文信息 RpcContext
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
上下文中存放的是當(dāng)前調(diào)用過(guò)程中所需的環(huán)境信息。所有配置信息都將轉(zhuǎn)換為 URL 的參數(shù),參見(jiàn) schema 配置參考手冊(cè) 中的對(duì)應(yīng)URL參數(shù)一列。
RpcContext 是一個(gè) ThreadLocal 的臨時(shí)狀態(tài)記錄器,當(dāng)接收到 RPC 請(qǐng)求,或發(fā)起 RPC 請(qǐng)求時(shí),RpcContext 的狀態(tài)都會(huì)變化。比如:A 調(diào) B,B 再調(diào) C,則 B 機(jī)器上,在 B 調(diào) C 之前,RpcContext 記錄的是 A 調(diào) B 的信息,在 B 調(diào) C 之后,RpcContext 記錄的是 B 調(diào) C 的信息。
服務(wù)消費(fèi)方
// 遠(yuǎn)程調(diào)用 xxxService.xxx(); // 本端是否為消費(fèi)端,這里會(huì)返回true boolean isConsumerSide = RpcContext.getContext().isConsumerSide(); // 獲取最后一次調(diào)用的提供方IP地址 String serverIP = RpcContext.getContext().getRemoteHost(); // 獲取當(dāng)前服務(wù)配置信息,所有配置信息都將轉(zhuǎn)換為URL的參數(shù) String application = RpcContext.getContext().getUrl().getParameter("application"); // 注意:每發(fā)起RPC調(diào)用,上下文狀態(tài)會(huì)變化 yyyService.yyy();服務(wù)提供方
public class XxxServiceImpl implements XxxService {public void xxx() {// 本端是否為提供端,這里會(huì)返回trueboolean isProviderSide = RpcContext.getContext().isProviderSide();// 獲取調(diào)用方IP地址String clientIP = RpcContext.getContext().getRemoteHost();// 獲取當(dāng)前服務(wù)配置信息,所有配置信息都將轉(zhuǎn)換為URL的參數(shù)String application = RpcContext.getContext().getUrl().getParameter("application");// 注意:每發(fā)起RPC調(diào)用,上下文狀態(tài)會(huì)變化 yyyService.yyy();// 此時(shí)本端變成消費(fèi)端,這里會(huì)返回falseboolean isProviderSide = RpcContext.getContext().isProviderSide();} }?
轉(zhuǎn)載于:https://www.cnblogs.com/yifanSJ/p/9180687.html
總結(jié)
以上是生活随笔為你收集整理的上下文信息 RpcContext的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mac svn 使用
- 下一篇: vue-cli脚手架中webpack配置