十一:Apache Dubbo 之 Filter(一)介绍及演示

本文介绍了如何在Dubbo中自定义Filter,包括如何实现Filter接口、使用@Activate注解启用,并通过示例展示了Filter如何拦截和修改RPC请求。同时,讨论了两种Filter应用方式:默认配置与自定义配置的结合。
摘要由CSDN通过智能技术生成

Apache Dubbo Filter 介绍

  • Apache Dubbo的Filter与Servlet 的Filter功能类似
  • 自定义Filter需要扩展Filter接口
  • 自定义Filter可以通过@Activate注解完成默认开启

在这里插入图片描述

Apache Dubbo Filter 演示

定义filter

package com.jiangzheng.course.dubbo.provider.filter;

import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;

@Activate(group = "provider")
public class MyFilter implements Filter {
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        URL url = invoker.getUrl();
        Class<?> anInterface = invoker.getInterface();
        String simpleName = anInterface.getSimpleName();
        String serviceName = invocation.getServiceName();
        String methodName = invocation.getMethodName();

        System.out.println("url : " + url.toFullString());
        System.out.println("simpleName : " + simpleName);
        System.out.println("serviceName : " + serviceName);
        System.out.println("methodName : " + methodName);

        return invoker.invoke(invocation);
    }
}

定义加载配置
在这里插入图片描述

打印结果

url : dubbo://30.96.216.103:29014/com.jiangzheng.course.dubbo.api.service.ServiceDemo?anyhost=true&application=provider&bind.ip=30.96.216.103&bind.port=29014&deprecated=false&dispatcher=all&dubbo=2.0.2&dynamic=true&generic=false&interface=com.jiangzheng.course.dubbo.api.service.ServiceDemo&metadata-type=remote&methods=getName,getSelf&pid=35168&release=3.0.0.preview&side=provider&timestamp=1647929726624
simpleName : ServiceDemo
serviceName : null
methodName : getSelf

第二种开启方式

    <!--default为dubbo原有的filter,myFilter为我们在META-INF下定义的自定义filter-->
    <dubbo:service id="serviceDemo" filter="default,myFilter" interface="com.jiangzheng.course.dubbo.api.service.ServiceDemo" ref="iServiceDemo"/>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值