当前位置: 首页 > news >正文

dubbo自定义扩展

Filter

任务详情

对于Provider服务中dubbo接口以Service结尾的,返回结果添加,Hello World

实现方式

在Provider中自定义一个Filter,在Filter中修改返回结果。

代码

import java.util.Objects;
import org.apache.dubbo.rpc.AsyncRpcResult;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author admin
 */
public class AppendedFilter implements Filter {

    private static final Logger logger = LoggerFactory.getLogger(AppendedFilter.class);

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        Result result = invoker.invoke(invocation);
        if (Objects.nonNull(invocation.getServiceName()) && invocation.getServiceName()
                .endsWith("Service")) {
            AsyncRpcResult asyncRpcResult = (AsyncRpcResult) result;
            Result appResponse = asyncRpcResult.getAppResponse();
            appResponse.setValue(appResponse.getValue() + ",Hello World");
        }
        return result;
    }
}

SPI配置

在META-INF/dubbo/org.apache.dubbo.rpc.Filter文件中添加以下配置

appended=com.doudou.dubbo.filter.AppendedFilter

配置文件

resources/application.properties文件中添加如下配置,激活刚才的自定义 Filter 实现:

dubbo.provider.filter=appended

注意
除了通过META-INF/dubbo/org.apache.dubbo.rpc.Filter配置激活Filter之外,还可以通过为实现类增加@Activate注解,已在满足某些条件时自动激活Filter实现

@Activate(group="provider")
public class AppendedFilter implements Filter {}

处理结果

2025-03-27 20:59:41.953  INFO 8156 --- [           main] com.doudou.dubbo.consumer.Task01         : result:hello zhangsan,Hello World

相关文章:

  • Redis常见面试问题汇总
  • 【deepseek 学c++】weakptr引用场景
  • HBase在Hadoop平台上的安装和配置
  • Blender多边形填充问题
  • 00.【Linux系统编程】 Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器)
  • Qt弹出新窗口并关闭(一个按钮)
  • Leetcode 四数之和
  • IEEE PDF Xpress校验出现 :字体无法嵌入问题以及pdf版本问题
  • docker中安装 python
  • Go 语言规范学习(3)
  • 5.0 WPF的基础介绍1-Grid,Stack,button
  • 同级目录下的两个文件怎么import
  • ngx_http_core_main_conf_t
  • DeepSeek-R1 模型现已在 AWS 平台上正式上线
  • SSE SseEmitter.completeWithError(e) 触发的处理逻辑
  • 使用 PowerShell 脚本 + FFmpeg 在 Windows 系统中批量计算 MP4视频 文件的总时长
  • (C语言)文本动态通讯录(动态通讯录升级版)(C语言小项目)
  • macOS 15 通过 MacPorts 安装 PHP 7 构建错误找不到符号在 dns.o 中解决方法
  • 使用 rsync 进行服务器文件同步与优化
  • STM32基础教程——输入捕获模式测量PWM频率
  • 杭州网站建设/微商推广哪家好
  • 武汉建设信息网站/宁波seo排名公司
  • 酒泉市建设局网站招标办/网址解析ip地址
  • wordpress仪表盘访问不了/搜索引擎营销与seo优化
  • 独立外贸网站建设/百度帐号登录个人中心
  • 广州技术支持 奇亿网站建设/专业恶意点击软件