ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第二章:(6)Dubbo 常用配置之 本地存根

2022-01-13 23:02:56  阅读:160  来源: 互联网

标签:Dubbo 构造函数 barService Stub 存根 BarService 第二章 客户端


一、本地存根

  在 Dubbo 中利用本地存根在客户端执行部分逻辑

  远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。

  

 

 

   1、在 spring 配置文件中按以下方式配置:

<dubbo:consumer interface="com.foo.BarService" stub="true" />

  或

<dubbo:consumer interface="com.foo.BarService" stub="com.foo.BarServiceStub" />

 

 

  2、提供 Stub 的实现

package com.foo;
public class BarServiceStub implements BarService {
    private final BarService barService;
    
    // 构造函数传入真正的远程代理对象
    public BarServiceStub(BarService barService){
        this.barService = barService;
    }
 
    public String sayHello(String name) {
        // 此代码在客户端执行, 你可以在客户端做ThreadLocal本地缓存,或预先验证参数是否合法,等等
        try {
            return barService.sayHello(name);
        } catch (Exception e) {
            // 你可以容错,可以做任何AOP拦截事项
            return "容错数据";
        }
    }
}

 

 

  注意:

  1、Stub 必须有可传入 Proxy 的构造函数;

  2、在 interface 旁边放一个 Stub 实现,它实现 BarService 接口,并有一个传入远程 BarService 实例的构造函数;

 

 

二、代码示例

  1、创建本地存根

 

  2、配置

 

 

标签:Dubbo,构造函数,barService,Stub,存根,BarService,第二章,客户端
来源: https://www.cnblogs.com/niujifei/p/15800082.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有