图解Dubbo,六种扩展机制详解( 六 )

 
在服务消费方的配置文件中增加如下配置:
<dubbo:reference interface="com.example.service.SomeService" check="false" cluster="myClusterInvoker"/> 
这样 , 在服务调用时 , Dubbo框架会使用我们自定义的MyClusterInvoker容错策略进行处理 。
八、Dubbo的扩展机制实践1、实现一个使用自定义扩展点、过滤器、负载均衡器和容错机制的 Dubbo 服务在这个实践中 , 我们将实现一个使用自定义扩展点、过滤器、负载均衡器和容错机制的 Dubbo 服务 。
2、首先 , 我们需要定义一个服务接口 。例如 , 我们可以定义一个名为 SomeService 的服务接口 , 如下所示:
public interface SomeService {String sayHello(String name);} 
3、然后 , 我们需要实现该服务接口 。例如 , 我们可以实现一个名为 SomeServiceImpl 的服务实现类 , 如下所示:
public class SomeServiceImpl implements SomeService {@Overridepublic String sayHello(String name) {return "Hello, " + name + "!";}} 4、接下来 , 我们需要配置 Dubbo 的扩展点、过滤器、负载均衡器和容错机制 。例如 , 我们可以在服务提供方和服务消费方的配置文件中进行如下配置:
<!-- 扩展点配置 --><dubbo:protocol name="dubbo" extensinotallow="com.example.extension.MyProtocol"/><!-- 过滤器配置 --><dubbo:provider filter="com.example.filter.MyProviderFilter"/><dubbo:consumer filter="com.example.filter.MyConsumerFilter"/><!-- 负载均衡器配置 --><dubbo:reference interface="com.example.service.SomeService" loadbalance="com.example.loadbalance.MyLoadBalance"/><!-- 容错机制配置 --><dubbo:service interface="com.example.service.SomeService" cluster="com.example.cluster.MyCluster"/><dubbo:reference interface="com.example.service.SomeService" cluster="com.example.cluster.MyCluster"/>其中 , com.example.extension.MyProtocol? 是一个自定义的 Dubbo 协议扩展点实现类 , com.example.filter.MyProviderFilter? 和 com.example.filter.MyConsumerFilter? 是自定义的 Dubbo 过滤器实现类 , com.example.loadbalance.MyLoadBalance? 是一个自定义的 Dubbo 负载均衡器实现类 , com.example.cluster.MyCluster 是一个自定义的 Dubbo 容错机制实现类 。
5、最后 , 我们可以使用 Dubbo 的 API 在客户端调用该服务 。例如 , 我们可以使用如下代码在客户端调用该服务:
 
// 获取 Dubbo 服务引用SomeService someService = DubboReferenceBuilder.newBuilder().setInterface(SomeService.class).setUrl("dubbo://localhost:20880").build();// 调用 Dubbo 服务String result = someService.sayHello("Dubbo");System.out.println(result);

  •  
这样 , 我们就实现了一个使用自定义扩展点、过滤器、负载均衡器和容错机制的 Dubbo 服务
本文转载自微信公众号「哪吒编程」




推荐阅读