zoukankan      html  css  js  c++  java
  • dubbo Filter

    官方说明:

    调用拦截扩展

    扩展说明

    服务提供方和服务消费方调用过程拦截,Dubbo 本身的大多功能均基于此扩展点实现,每次远程方法执行,该拦截都会被执行,请注意对性能的影响。

    约定:

    • 用户自定义 filter 默认在内置 filter 之后。
    • 特殊值 default,表示缺省扩展点插入的位置。比如:filter="xxx,default,yyy",表示 xxx 在缺省 filter 之前,yyy 在缺省 filter 之后。
    • 特殊符号 -,表示剔除。比如:filter="-foo1",剔除添加缺省扩展点 foo1。比如:filter="-default",剔除添加所有缺省扩展点。
    • provider 和 service 同时配置的 filter 时,累加所有 filter,而不是覆盖。比如:<dubbo:provider filter="xxx,yyy"/> 和 <dubbo:service filter="aaa,bbb" />,则 xxx,yyy,aaa,bbb 均会生效。如果要覆盖,需配置:<dubbo:service filter="-xxx,-yyy,aaa,bbb" />

    简单示例: github

    1, 代码

    import com.alibaba.dubbo.common.Constants;
    import com.alibaba.dubbo.common.extension.Activate;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import com.alibaba.dubbo.rpc.*;
    
    import java.util.List;
    
    @Activate(group = Constants.PROVIDER, order = -999)
    public class AuthorityFilter implements Filter {
        private static final Logger logger = LoggerFactory.getLogger(AuthorityFilter.class);
        @Override
        public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    
    
            logger.info("接口名:{}",invocation.getInvoker().getInterface().getName());
            logger.info("方法名:{}",invocation.getMethodName());
            String clientIp = RpcContext.getContext().getRemoteHost();
            logger.info("访问ip为{}", clientIp);
    
            return invoker.invoke(invocation);
    
        }
    }

    2,  配置  MATA-INFdubbocom.alibaba.dubbo.rpc.Filter 文件下面内容

    AuthorityFilter=zzhiDubboprovider.filter.AuthorityFilter

    3,测试:

    2017-12-21 10:47:01.906  INFO 10820 --- [:20880-thread-2] z.filter.AuthorityFilter                 : 接口名:zzhiDubboapi.service.PeopleService
    2017-12-21 10:47:01.908  INFO 10820 --- [:20880-thread-2] z.filter.AuthorityFilter                 : 方法名:findPeople
    2017-12-21 10:47:01.908  INFO 10820 --- [:20880-thread-2] z.filter.AuthorityFilter                 : 访问ip为10.255.2.122
  • 相关阅读:
    文件分段后,进行分片上传逻辑
    总结几个最近处理问题中使用http协议的代码
    openresty(nginx)中使用lua脚本获取请求IP地址的代码
    线上Storm的worker,executor,task参数调优篇
    async/await
    DataTables.Queryable Sample
    关闭 XXXXX 前你必须关闭所有会话框
    关于P/Invoke的闲话
    Windows 2008 Scheduled tasks result codes
    MySQL 8.0.13的使用心得
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/8079202.html
Copyright © 2011-2022 走看看