dubbo復習:(14)通過上下文傳遞附加數據

服務調用和響應時,除了請求的方法和返回的響應,還可以通過上下文(Context)傳遞更多的數據(附加數據)
一、接口定義

package cn.edu.tju.service;public interface ContextService {String invoke(String param);
}

二、服務端接口實現:

package cn.edu.tju.service;import com.alibaba.fastjson.JSON;
import org.apache.dubbo.config.annotation.DubboService;
import org.apache.dubbo.rpc.RpcContext;import java.util.Map;@DubboService
public class ContextServiceImpl implements ContextService{@Overridepublic String invoke(String param) {//接收客戶端傳遞過來的附加數據Map<String, Object> serverAttachments = RpcContext.getServerAttachment().getObjectAttachments();System.out.println("【from client】:" + JSON.toJSONString(serverAttachments));//往客戶端傳遞數據System.out.println("【to client】: hi world");RpcContext.getServerContext().setAttachment("hi","world");StringBuilder s = new StringBuilder();s.append("response:").append(param);return s.toString();}
}

其中除了正常的響應之外,還通過上下文傳遞了hi world。

三、客戶端調用

package cn.edu.tju.service;import com.alibaba.fastjson.JSON;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcContextAttachment;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.Map;@Component
public class ContextConsumer implements CommandLineRunner {@DubboReferenceprivate ContextService contextService;@Overridepublic void run(String... args) throws Exception {// 向服務器傳遞附加數據System.out.println("【to server】 hello,world");RpcContext.getClientAttachment().setAttachment("hello","world");String res = contextService.invoke("this is a book");//讀取從服務器端返回的附加數據Map<String, Object> clientAttachment = RpcContext.getServerContext().getObjectAttachments();System.out.println("【from server】" + JSON.toJSONString(clientAttachment));System.out.println("調用結果 : " + res);}
}

會向服務器發送hello world,同時,會收到服務器端返回的hi world

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20686.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OA前端用什么開發:深入探索技術選型與最佳實踐

OA前端用什么開發&#xff1a;深入探索技術選型與最佳實踐 在開發OA&#xff08;辦公自動化&#xff09;系統的前端時&#xff0c;技術選型是至關重要的一步。它不僅決定了系統的外觀和用戶體驗&#xff0c;還直接影響到系統的性能、安全性和可維護性。本文將從四個方面、五個…

nuxt3 api如何透傳(不引第3方庫)

背景&#xff1a; nuxt做為一個vue的服務端渲染框架&#xff0c;本身就具備服務端的功能&#xff0c;理論上可以完整做一個系統功能&#xff0c;包括對數據庫等等操作&#xff0c;但更合理的做法是nuxt應該定位只做服務端渲染的事情&#xff0c;更偏向ui層面&#xff0c;而非數…

大數據分析統計

大數據分析統計 from datetime import datetimeimport pandas as pd import matplotlib.pyplot as pltpm25files [PM2.5_2021.csv, PM2.5_2022.csv, PM2.5_2023.csv] pm10files [PM10_2021.csv, PM10_2022.csv, PM10_2023.csv]def read_csv_file(files):# 每個文件都有表頭…

C++之類(class)的三種成員修飾符(public、private、protected)總結

1、背景介紹 在C中&#xff0c;類&#xff08;class&#xff09;中成員的三種訪問修飾符&#xff08;access specifiers&#xff09;用于控制類的成員&#xff08;屬性和方法&#xff09;的訪問權限。這些修飾符決定了類成員在類的外部和內部是否可以被訪問。以下是這三種訪問…

macOS上編譯android的ffmpeg及ffmpeg.c

1 前言 前段時間介紹過使用xcode和qt creator編譯調試ffmepg.c&#xff0c;運行平臺是在macOS上&#xff0c;本文擬介紹下android平臺如何用NDK編譯鏈編譯ffmepg庫并使用。 macOS上使用qt creator編譯調試ffmpeg.c macOS上將ffmpeg.c編譯成Framework 大體思路&#xff1a; 其…

信息學奧賽初賽天天練-18-挑戰程序閱讀-最長公共子序列、字符串與數組越界的巧妙應用

PDF文檔公眾號回復關鍵字:20240601 1 2023 CSP-J 閱讀程序2 閱讀程序&#xff08;程序輸入不超過數組成字符串定義的范圍&#xff1a;判斷題正確填√&#xff0c;錯誤填&#xff1b;除特殊說明外&#xff0c;判斷題1.5分&#xff0c;選擇題3分&#xff0c;共計40分&#xff…

從創意到成功:創業全過程詳解

目錄 創業目標市場的選擇和分析用戶畫像的描繪軟件產品的核心功能和價值主張競爭對手分析及自身競爭優勢目標用戶的具體需求調研初步的產品設計思路或框架技術棧的選擇基于哪些考量如何規劃產品的迭代路線圖預計的商業模式 1. 創業目標市場的選擇和分析 市場選擇的重要性 創…

YOLOv10漲點改進:IoU優化 | Powerful-IoU更好、更快的收斂IoU,效果秒殺CIoU、GIoU等 | 2024年最新IoU

??????本文獨家改進:Powerful-IoU更好、更快的收斂IoU,是一種結合了目標尺寸自適應懲罰因子和基于錨框質量的梯度調節函數的損失函數 ??????MS COCO和PASCAL VOC數據集實現漲點 《YOLOv10魔術師專欄》將從以下各個方向進行創新: 【原創自研模塊】【多組合點優…

spark SQL優化器catalyst學習

一、Catalyst 概述 Catalyst 是 Spark SQL 的優化器&#xff0c;它負責將 SQL 查詢轉換為物理執行計劃。Catalyst 優化器的目標是生成高效的執行計劃&#xff0c;以最小化查詢的執行時間。它使用了多種優化技術&#xff0c;包括基于規則的優化、基于代價的優化和動態規劃等。我…

Dijkstra求最短路篇二(全網最詳細講解兩種方法,適合小白)(python,其他語言也適用)

前言&#xff1a; Dijkstra算法博客講解分為兩篇講解&#xff0c;這兩篇博客對所有有難點的問題都會講解&#xff0c;小白也能很好理解。看完這兩篇博客后保證收獲滿滿。 第一篇博客講解樸素Dijkstra算法Dijkstra求最短路篇一(全網最詳細講解兩種方法&#xff0c;適合小白)(p…

openstack 中如何檢查VLAN 配置: 確保正確配置了兩個 VLAN,并且兩個 VLAN 之間進行了正確的路由。

在 OpenStack 中檢查 VLAN 配置并確保兩個 VLAN 之間進行了正確的路由&#xff0c;可以按照以下步驟進行操作&#xff1a; 查看網絡配置&#xff1a; 登錄到 OpenStack 控制節點上的命令行界面。使用 neutron net-list 命令查看當前存在的網絡列表。找到與你關注的 VLAN 相關的…

計網ppt標黃知識點整理第(2)章節——謝希仁版本、期末復習自用

物理層考慮的是怎樣才能在連接各種計算機的傳輸媒體上傳輸數據比特流&#xff0c;而不是指具體的傳輸媒體。4 個特性&#xff1a; 機械特性&#xff1a;指明接口所用接線器的形狀和尺寸、引線數目和排列、固定和鎖定裝置等。 電氣特性&#xff1a;指明在接口電纜的各條線上出現…

如何在 JS 中快速讀取文件

本文翻譯自 How to read files quickly in JavaScript&#xff0c;作者&#xff1a;Daniel Lemire&#xff0c; 略有刪改。 假設你需要在服務器上使用JavaScript讀取多個文件。在像Node.js這樣的運行時環境中&#xff0c;JavaScript有多種讀取文件的方式。哪一種是最好的呢&…

Linux軟件安裝包rpm與tgz格式的區別

rpm與tgz的區別 1、Linux軟件包的內容分類2、Linux軟件包的格式分類 1、Linux軟件包的內容分類 Linux應用程序的軟件包按內容類別可分為兩類&#xff1a; 可執行文件&#xff08;編譯后的二進制軟件包&#xff09; 解包后可以直接運行&#xff0c;看不到源代碼。例如&#xff0…

基于Springboot駕校預約平臺小程序的設計與實現(源碼+數據庫+文檔)

一.項目介紹 系統角色&#xff1a;管理員、教練、學員 小程序(僅限于學員注冊、登錄)&#xff1a; 查看管理員發布的公告信息 查看管理員發布的駕校信息 查看所有教練信息、預約(需教練審核)、評論、收藏喜歡的教練 查看管理員發布的考試信息、預約考試(需管理…

代碼隨想錄算法訓練營Day8|541. 反轉字符串II、替換數字、151.翻轉字符串里的單詞、卡碼網:55.右旋轉字符串

541. 反轉字符串II 1.這道題剛開始把題意理解錯了&#xff0c;以為對于任意長度的字符串都只反轉[0,k-1]以及[2k,3k-1]區間的值。 2.但實際上是要把一個字符串分成若干長度為2k的小區間&#xff0c;反轉前[0,k-1]的字符串&#xff0c;[k,2k-1]保持不變; 3.如果有一個區間字符串…

2024年東北師范CCPC

文章目錄 A.Paper WateringB.nIM gAMEE.Checksum A.Paper Watering 思路&#xff1a;題目說有平方和開方兩種操作&#xff0c;如果這個數是平方數&#xff0c;那么它開方之后就只能開方&#xff0c;如果平方的話就重復了&#xff0c;反之就有開方和平方兩種操作。 代碼如下 //…

為了方便看公眾號文章,我搭建了個博客,在線看公眾號所有歷史文章,想看哪天的文章一秒就能找到

公眾號沒有個網頁版的文章列表&#xff0c;只能在電腦和手機客戶端看&#xff0c;想看之前的歷史文章只能一直往下拉&#xff0c;想找某篇文章非常費勁。 為了方便看公眾號文章&#xff0c;我搭建了個博客&#xff0c;博客地址https://sushengbuhuo.github.io/blog &#xf…

通過 SFP 接口實現千兆光纖以太網通信1

基于米聯客ARTIX-7 系列開發板及其開發手冊。 總體實現框圖如下&#xff1a; SFP 接口 SFP 信號定義如下圖所示。 Tri Mode Ethernet MAC 設置 由于使用千兆通訊&#xff0c;因此將速率設為 1Gbps。如下圖所示。 首先&#xff0c;由于該 IP 需要與 IP 核 1G/2.5G Ethernet …

基于IoTDB 平臺的學習和研究

Apache IoTDB&#xff08;物聯網數據庫&#xff09;是一個針對物聯網領域的高性能原生數據庫&#xff0c;適用于數據管理和分析&#xff0c;并可在邊緣計算和云端部署。由于它輕量級的架構、高性能和豐富的功能集&#xff0c;以及與Apache Hadoop、Spark和Flink的深度集成&…