本文基于 Dubbo 2.6.1 版本,望知悉。
1. 概述
本文分享回声测试。我们来看下 《用户指南 —— 回声测试》 的定义:
回声测试用于检测服务是否可用,回声测试按照正常请求流程执行,能够测试整个调用是否通畅,可用于监控。
2. 服务消费者
2.1 EchoService
com.alibaba.dubbo.rpc.service.EchoService
,Echo 服务接口。代码如下:
public interface EchoService { |
所有服务自动实现 EchoService 接口,只需将任意服务引用强制转型为 EchoService,即可使用。
在 AbstractProxyFactory 中,#getProxy(invoker)
方法,创建服务消费者的 Proxy 对象时,自动实现 EchoService 接口,代码如下:
2.2 使用示例
旁白君:如下部分,从官方文档,直接复制粘贴的。
Spring 配置:
<dubbo:reference id="memberService" interface="com.xxx.MemberService" /> |
代码:
// 远程服务引用 |
3. 服务提供者
服务提供者,是不实现 EchoService 接口,而是通过 EchoFilter 实现。
3.1 EchoFilter
com.alibaba.dubbo.rpc.filter.EchoFilter
,实现 Filter 接口,回声过滤器。代码如下:
110000) (group = Constants.PROVIDER, order = - |
- 使用 Dubbo SPI Adaptive 机制,自动加载,仅限服务提供者。
- 如果调用方法是回声调用时,通过方法名(
$echo
) 和方法参数数量为 1 ,直接返回方法参数。 - 若果调用方法非回声调用时,调用
Invoker#invoke(invocation)
方法,继续走后面的过滤链。
666. 彩蛋
美滋滋。