日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Dubbo秘密傳遞:讓你的代碼行云流水

來源: 責編: 時間:2023-12-22 09:36:23 256觀看
導讀哈嘍,大家好,我是了不起。在Dubbo使用過程中,有一些通用參數如果顯式的在接口參數中傳遞,使用起來會有一些不方便。比如:經常使用的用戶信息、token等上下文信息,如果都放入參數中傳遞,這樣會耦合到業務邏輯中了,這時隱式傳參

哈嘍,大家好,我是了不起。YpI28資訊網——每日最新資訊28at.com

在Dubbo使用過程中,有一些通用參數如果顯式的在接口參數中傳遞,使用起來會有一些不方便。YpI28資訊網——每日最新資訊28at.com

比如:經常使用的用戶信息、token等上下文信息,如果都放入參數中傳遞,這樣會耦合到業務邏輯中了,這時隱式傳參就是一種比較好的處理方式了。YpI28資訊網——每日最新資訊28at.com

隱式傳參

Dubbo提供了RpcContext隱式傳參的方式:YpI28資訊網——每日最新資訊28at.com

//消費側傳入參數RpcContext.getContext().setAttachment(String key, String value);//服務提供側接收參數RpcContext.getContext().getAttachment(String key);

通過上面兩個方法,我們可以在消費端傳入參數,然后在提供側就可以接收到參數了,類似于線程變量ThreadLocalYpI28資訊網——每日最新資訊28at.com

為了更好的兼顧Dubbo多重調用導致隱式傳參丟失的問題,我們可以在每個Dubbo服務程序中加入兩個filter可解決問題YpI28資訊網——每日最新資訊28at.com

創建Filter

消費側:YpI28資訊網——每日最新資訊28at.com

import java.util.HashMap;import java.util.Map;import com.alibaba.dubbo.common.extension.Activate;import com.alibaba.dubbo.rpc.Filter;import com.alibaba.dubbo.rpc.Invocation;import com.alibaba.dubbo.rpc.Invoker;import com.alibaba.dubbo.rpc.Result;import com.alibaba.dubbo.rpc.RpcContext;import com.alibaba.dubbo.rpc.RpcException;import com.alibaba.fastjson.JSONObject;@Activate(group = {Constants.CONSUMER})public class DubboConsumerContextFilter implements Filter {  @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {  RpcContext.getContext().setAttachment("token", "tokenvalue");  return invoker.invoke(invocation); }}

服務提供側:YpI28資訊網——每日最新資訊28at.com

import java.util.Map;import com.alibaba.dubbo.common.extension.Activate;import com.alibaba.dubbo.rpc.Filter;import com.alibaba.dubbo.rpc.Invocation;import com.alibaba.dubbo.rpc.Invoker;import com.alibaba.dubbo.rpc.Result;import com.alibaba.dubbo.rpc.RpcContext;import com.alibaba.dubbo.rpc.RpcException;import com.alibaba.fastjson.JSONObject;@Activate(group = {Constants.PROVIDER})public class DubboProviderContextFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {  // 處理token  String token = RpcContext.getContext().getAttachment("token");        //TODO 處理代碼  return invoker.invoke(invocation); }}

其中@Activate注解指定了這個Filter是在消費端生效還是服務端生效。YpI28資訊網——每日最新資訊28at.com

配置filter到META-INF中

在/src/main/resources/META-INF/dubbo/下新建文件,文件名為com.alibaba.dubbo.rpc.Filter,沒錯,這就是文件的名稱,而不是包路徑。YpI28資訊網——每日最新資訊28at.com

文件內容:YpI28資訊網——每日最新資訊28at.com

dubboProviderContextFilter=com.xxx.DubboProviderContextFilterdubboConsumerContextFilter=com.xxx.DubboConsumerContextFilter

總結

經過以上簡單的幾步,我們在對業務代碼無侵入的情況下,通過Filter實現了Dubbo遠程調用中的隱式傳參。這可以方便地在服務調用鏈中傳遞一些公共的上下文信息,如登錄信息、請求ID等。YpI28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-51829-0.htmlDubbo秘密傳遞:讓你的代碼行云流水

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 中的 Time 和 Datetime 模塊

下一篇: 如何給開源項目發起提案

標簽:
  • 熱門焦點
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網聯合創
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
Top 主站蜘蛛池模板: 福海县| 蓝山县| 颍上县| 临清市| 贵定县| 北流市| 平定县| 尚志市| 梅河口市| 稻城县| 外汇| 千阳县| 饶平县| 栖霞市| 长垣县| 高阳县| 大同市| 轮台县| 昭觉县| 屏东市| 竹溪县| 藁城市| 梓潼县| 陆川县| 沈丘县| 巴楚县| 西吉县| 和龙市| 怀仁县| 平原县| 武功县| 马尔康县| 白玉县| 延边| 长岛县| 吴忠市| 偃师市| 襄城县| 南丹县| 苗栗县| 柘城县|