dubbo的RpcContext隐式传参
来源:互联网 发布:极光推送php demo 编辑:程序博客网 时间:2024/06/05 08:30
dubbo通过客户端向服务器端传递参数,传递参数时path,group,version,dubbo,token,timeout即可key有特殊处理,不能使用这几个特殊key
服务提供方使用RpcContext.getContext()
.getAttachments();获取参数,
服务器消费方使用
RpcContext.getContext().setAttachment(); 传递参数。
上下文信息
RpcContext是一个ThreadLocal的临时状态记录器,当接收到RPC请求,或发起RPC请求时,RpcContext的状态都会变化。比如A调用B,B再调用C,则B机器上,在B调用C之前,RpcContext记录的是A调用B的信息,在B调用C之后,RpcContext记录的是B调用C。
客户端:RpcContext.getContext().setAttachment("sourceid", "15700007");--A
调dubbo接口:smsService.smsSend();
服务端:RpcContext.getContext().getAttachment("sourceid");--B
一定要注意,调接口时,必须是A直接到B,如果A没有直接到B,而是先到C,再由C到B,那么在B里getAttachment(),就获取不到值了。
以下是测试代码:
package com.yncp.dubbo.service;public interface IDubboParmService { public String print(); }
package com.yncp.dubbo.service.impl;import java.util.Map;import com.alibaba.dubbo.rpc.RpcContext;import com.yncp.dubbo.service.IDubboParmService;public class DubboParmServiceImpl implements IDubboParmService { public String print() { Map<String, String> attachments = RpcContext.getContext() .getAttachments(); String parm = attachments.get("parm"); System.out.println("parm:" + parm); return "嗨"; }}
消费方测试:
import java.io.IOException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.alibaba.dubbo.rpc.RpcContext;import com.yncp.dubbo.service.IDubboParmService;public class DubboStart { public static void main(String[] args) throws IOException { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); //RpcContext.getContext().setAttachment("parm", "嘿嘿"); IDubboParmService dubboParmService=(IDubboParmService) ctx.getBean("dubboParmService"); // setAttachment设置的KV,在完成下面一次远程调用会被清空。即多次远程调用要多次设置。 for(int i=0;i<5;i++){ RpcContext.getContext().setAttachment("parm", "嘿嘿"+i); dubboParmService.print(); } }}
阅读全文
0 0
- dubbo的RpcContext隐式传参
- (十五)RpcContext对象
- dubbo简介,dubbo架构,dubbo的方法
- Dubbo隐式传参
- dubbo学习(三)-dubbo的服务发布
- 【dubbo】-001dubbo的基本介绍
- 【dubbo】-003 dubbo中 ZooKeeper的安装
- Dubbo学习(一):dubbo的基本概念
- dubbo(三)dubbo的文件上传
- dubbo 管理控制台 的安装 dubbo-admin
- Dubbo注册dubbo服务的源码分析
- dubbo+zookeeper+dubbo-admin环境的搭建
- Dubbo 简单的入门【Maven+SpringMVC+Dubbo 】
- dubbo 的使用
- dubbo 的使用
- dubbo的基本使用
- dubbo的使用场景
- dubbo的使用总结
- 简易版WireShark实现-相关网络知识(1)
- activity和fragment的转场动画的实现
- Docker跨主机容器访问通信-Open vSwitch
- ssh框架配置文件的作用
- 小白建站教程(1)
- dubbo的RpcContext隐式传参
- 第一人称<Begin>
- STM32初学Keil4编译时出现 Error:Failed to execute 'BIN40/Armcc'
- svn的三个文件夹
- 第一人称<End>
- git修改远程仓库地址
- 第一人称<Fenshu >
- 会话跟踪机制 Session
- C Primer Plus学习笔记----第一章初识C语言