zoukankan      html  css  js  c++  java
  • dubbo系列六、SPI扩展Filter隐式传参

    一、实现Filter接口

    1、消费者过滤器:ConsumerTraceFilter.java

    package com.dubbo.demo.Filter;
    
    import com.alibaba.dubbo.rpc.*;
    
    import java.util.Map;
    import java.util.UUID;
    
    public class ConsumerTraceFilter implements Filter {
    
        @Override
        public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
            Map<String, String> stringStringMap = invocation.getAttachments();
            // 设置参数
            stringStringMap.put("patentId","0");
            stringStringMap.put("traceId",UUID.randomUUID().toString());
            System.out.println("生成tradeId:"+stringStringMap.get("traceId"));
            return invoker.invoke(invocation);
        }
    }

    2、生产者过滤器:ProviderTraceFilter.java

    package com.dubbo.demo.Filter;
    
    import com.alibaba.dubbo.rpc.*;
    
    import java.util.Map;
    
    public class ProviderTraceFilter implements Filter {
    
        public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
            Map<String, String> stringStringMap = invocation.getAttachments();
            // 接收参数
            System.out.println("收到:patentId:"+stringStringMap.get("patentId"));
            System.out.println("收到:tradeId:"+stringStringMap.get("traceId"));
            return invoker.invoke(invocation);
        }
    }

    二、配置SPI Filter扩展文件

    1、生产者配置

    在目录:resources/META-INF/dubbo/ 创建com.alibaba.dubbo.rpc.Filter(纯文本文件.txt)

    内容:

    traceFilter=com.dubbo.demo.Filter.ProviderTraceFilter

    2、消费者配置

    在目录:resources/META-INF/dubbo/ 创建com.alibaba.dubbo.rpc.Filter(纯文本文件.txt)

    内容:

    traceFilter=com.dubbo.demo.Filter.ConsumerTraceFilter

    三、配置dubbo文件

    1、生产者

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://code.alibabatech.com/schema/dubbo
            http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <!--过滤器配置-->
        <dubbo:provider filter="traceFilter" />
    <!--dubbo应用程序命名--> <dubbo:application name="dubbo-demo-provider"/> <!--dubbo注册地址--> <dubbo:registry address="zookeeper://192.168.1.100:2181"/> <!--dubbo协议地址--> <dubbo:protocol name="dubbo" port="20880"/> <!--接口声明--> <dubbo:service interface="com.dubbo.demo.api.DemoRpcService" ref="demoRpcService"/> <bean id="demoRpcService" class="com.dubbo.demo.DemoRpcServiceImpl"/> </beans>

    2、消费者

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://code.alibabatech.com/schema/dubbo
            http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <!--过滤器配置-->
        <dubbo:consumer filter="traceFilter" />
    
        <!--dubbo应用程序命名-->
        <dubbo:application name="dubbo-demo-provider"/>
        <!--dubbo注册地址-->
        <dubbo:registry address="zookeeper://192.168.1.100:2181"/>
        <!--接口引用-->
        <dubbo:reference interface="com.dubbo.demo.api.DemoRpcService" id="demoRpcService"/>
    </beans>

    四、验证

    依次启动生产者、消费者发起远程调用

     示例代码:

    https://github.com/Star-Lordxing/dubbo-demo

  • 相关阅读:
    python之集合(set)
    python之字典
    python之列表
    随笔
    JS实现颜色值格式转换 rgb和十六进制的转换
    20211025一周的计划
    密码肯定没错,但是你死活登录不了,登录页面检查密码格式不对,无法执行登录的一种解决方法
    安卓mbn文件丢失,无法搜索移动信号,工程模式mbn乱改,不用QPST烧录怎样恢复?超简单!
    安装Linux Deploy和Termux之后,再安装ftp服务软件都是多余的!
    “500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/9738906.html
Copyright © 2011-2022 走看看