使用@DubboReference注解消费服务
在Dubbo3.x中,@DubboReference
是核心注解,用于声明对远程Dubbo服务的引用。通过该注解,消费者可以透明调用提供者暴露的接口。
@DubboReference
private UserService userService;
基础参数配置
通过注解属性可指定服务版本、分组、超时等基础参数。版本和分组需与提供者严格匹配,否则无法调用。
@DubboReference(version = "2.0.0", group = "user-group")
private UserService userService;
高级参数配置
负载均衡策略和集群容错模式可通过loadbalance
和cluster
属性指定。Dubbo内置多种策略如random
、roundrobin
等。
@DubboReference(loadbalance = "roundrobin", cluster = "failfast")
private UserService userService;
异步调用配置
设置async=true
启用异步调用,配合returnType
可处理Future或CompletableFuture返回值。
@DubboReference(async = true, returnType = "future")
private UserService userService;
直连测试模式
开发阶段可通过url
属性绕过注册中心直连提供者,格式为dubbo://ip:port
。
@DubboReference(url = "dubbo://127.0.0.1:20880")
private UserService userService;
泛化调用支持
设置generic=true
启用泛化调用,适用于未持有接口jar包的场景,参数需使用GenericService
。
@DubboReference(generic = true)
private GenericService genericService;
参数验证配置
通过validation
属性启用JSR303验证,需在提供者接口方法上使用验证注解。
@DubboReference(validation = "true")
private UserService userService;
服务降级配置
设置mock
属性可指定降级策略,当调用失败时返回预设的mock值或执行mock类。
@DubboReference(mock = "return null")
private UserService userService;
元数据传递配置
parameters
属性可传递自定义键值对,这些参数会出现在RPC上下文中。
@DubboReference(parameters = {"env", "dev"})
private UserService userService;
服务路由配置
通过filter
属性指定自定义过滤器链,多个过滤器用逗号分隔。
@DubboReference(filter = "customFilter1,customFilter2")
private UserService userService;
以上配置方式均需配合Dubbo3.x的Spring Boot Starter或XML配置使用。实际开发时应根据业务需求选择合适参数,生产环境建议通过配置中心动态调整参数。