W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
通過上下文存放當(dāng)前調(diào)用過程中所需的環(huán)境信息
上下文中存放的是當(dāng)前調(diào)用過程中所需的環(huán)境信息。所有配置信息都將轉(zhuǎn)換為 URL 的參數(shù),參見 schema 配置參考手冊 中的對應(yīng)URL參數(shù)一列。
RpcContext 是一個(gè) ThreadLocal 的臨時(shí)狀態(tài)記錄器,當(dāng)接收到 RPC 請求,或發(fā)起 RPC 請求時(shí),RpcContext 的狀態(tài)都會變化。比如: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 的信息。
// 遠(yuǎn)程調(diào)用
xxxService.xxx();
// 本端是否為消費(fèi)端,這里會返回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)會變化
yyyService.yyy();
public class XxxServiceImpl implements XxxService {
public void xxx() {
// 本端是否為提供端,這里會返回true
boolean 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)會變化
yyyService.yyy();
// 此時(shí)本端變成消費(fèi)端,這里會返回false
boolean isProviderSide = RpcContext.getContext().isProviderSide();
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: