Soul网关源码学习系列之【Sofa插件】

本文介绍了Soul网关中Sofa插件的作用,该插件用于将HTTP协议转换为SOFA协议,支持SOFA的泛化调用。内容涉及Sofa插件的代码实现,包括Selector、Rule和MetaData的格式,并通过与Dubbo插件的比较,展示了两者的主要区别在于返回结果类型。文中提及SOFA的genericInvoker采用泛化调用访问业务接口,但对泛化调用和响应式编程Mono的详细理解留待后续更新。
摘要由CSDN通过智能技术生成

Sofa插件的作用

  • sofa插件是将http协议 转换成sofa协议 的插件,也是网关实现sofa泛化调用的关键。
  • 和Dubbo插件一样,sofa插件需要配合元数据才能实现sofa的调用。
  • 想更详细了解,可以参考官方文档。我这里还是主要看一下其代码实现。

代码实现

  • Sofa的Selector,rule以及metaData的格式和Dubbo是一样的。至于两个插件的区别在哪,后面看了Sofa的代码就知道了。
  • 看一下sofa插件的doExecute方法,通过和Dubbo插件的doExecute方法对比,它们的区别只有最后的返回结果类型是不一样的。
      // sofa
      final Mono<Object> result = sofaProxyService.genericInvoker(body, metaData, exchange);
      return result.then(chain.execute(exchange));
      //--------------------------------------------
      // dubbo
      Object result = alibabaDubboProxyService.genericInvoker(body, metaData);
        if (Objects.nonNull(result)) {
         
            exchange.getAttributes().put(Constants.DUBBO_RPC_RESULT, result);
        } else {
         
            exchange.getAttributes().put(Constants.DUBBO_RPC_RESULT, Constants.DUBBO_RPC_RESULT_EMPTY);
        }
        exchange.getAttributes().put
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值