概述
这是服务消费者引用服务的配置标签。对应的配置类为 org.apache.dubbo.config.ReferenceConfig。dubbo:reference标签一共有27个属性(截至2.7.7版本)。
属性详情
id
服务引用bean的id,即当前dubbo:reference标签代表的服务的bean的id,其为string类型,必填属性(后续的属性说明中,没有专门指明是必填属性的,均为可选属性)。
interface
服务接口名,类型是class即接口完整类名,属于dubbo:reference标签的必填属性,其作用是用于服务发现。
version
服务版本,与服务提供者的版本一致。对应URL参数为version,类型为string。
group
服务分组,对应URL参数为group,类型为string。当一个接口有多个实现,可以用分组区分,必须和服务提供方一致。
timeout
服务方法调用超时时间,单位毫秒。long类型,对应URL的参数为timeout,缺省使用的timeout,是性能调优属性之一。
retries
远程服务调用重试次数,不包括第一次调用,不需要重试请设为0,缺省使用的retries。int类型的性能调优类属性,对应URL参数retries。
connections
对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数。int类型的性能调优类属性,URL对应的参数为connections,缺省使用的connections。
loadbalance
负载均衡策略,对应URL中的loadbalance参数,string类型,其取值范围为random,roundrobin,leastactive,分别表示随机,轮询,最少活跃调用。loadbalance是性能调优中非常重要的属性之一,缺省使用的loadbalance。
async
是否异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程。boolean类型的性能调优类属性,URL中对应参数为async,缺省使用的async。
generic
是否缺省泛化接口,如果为泛化接口,将返回GenericService。属于服务治理类的属性,类型为boolean,其对应的URL参数为generic,缺省使用的generic。
check
启动时检查提供者是否存在,boolean类型。设置为true时,如果提供者即服务不存在注册中心,将报错,设置为false时,不做检查。这是一个很有用的服务治理类的属性,在出现服务循环引用时,可以设置为false解决。其对应的URL参数为check。缺省使用的check。
url
点对点直连服务提供者地址,将绕过注册中心。string类型,URL中对应的参数为url。
stub
服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)。其类型为class/boolean,URL中对应的参数为stub。
mock
服务接口调用失败Mock实现类名,该Mock类必须有一个无参构造函数,与stub的区别在于,Local总是被执行,而mock只在出现非业务异常(比如超时,网络异常等)时执行,stub在远程调用之前执行,Mock在远程调用后执行。mock是比较重要的服务治理的属性,其类型为class或boolean,缺省值为false。对应URL的参数是mock。
cache
以调用参数为key,缓存返回结果,其类型为string/boolean,取值范围lru, threadlocal, jcache等。在URL中对应的参数为cache。
validation
是否启用JSR303标准注解验证,如果启用,将对方法参数上的注解进行校验。boolean类型,在URL中对应的参数为validation。
proxy
选择动态代理实现策略,string类型的性能调优类属性,可选取值为jdk和javassist,缺省值为javassist。其在URL的参数为proxy。
client
客户端传输类型设置,如Dubbo协议的netty或mina。string类型的性能调优类属性,其在URL的参数为client。
registry
string类型,从指定注册中心注册获取服务列表,在多个注册中心时使用,值为的id属性,多个注册中心ID用逗号分隔。缺省将从所有注册中心获服务列表后合并结果。
owner
调用服务负责人,用于服务治理,请填写负责人公司邮箱前缀。string类型的属性,对应URL参数为owner。
actives
每服务消费者每服务每方法最大并发调用数。int类型,缺省值为0,对应URL参数为actives,属于性能调优类属性。
cluster
集群方式,string类型的性能调优类属性,可选取值为failover、failfast、failsafe、failback、forking,缺省值为failover。
filter
服务过滤器链,服务消费方远程调用过程拦截器名称,多个名称用逗号分隔。string类型性能调优属性,缺省值为default。其对应的URL参数为reference.filter。
listener
服务消费方引用服务监听器名称,多个名称用逗号分隔。string类型的性能调优类属性,其对应的URL参数为invoker.listener,缺省值为default。
layer
服务调用者所在的分层。如:biz、dao、intl:web、china:acton。string类型的服务治理类属性,其在URL上对应的参数为layer。
init
是否在afterPropertiesSet()时饥饿初始化引用,否则等到有人注入或引用该实例时再初始化。boolean类型的性能调优类属性,缺省值为false,其在URL上对应的参数为init。
protocol
string类型,只调用指定协议的服务提供方,其它协议忽略。其在URL上对应的参数为protocol。
总结
细心的小伙伴可能已经发现,其实有不少属性和dubbo:service中的属性很类似,其含义也基本相同。确实如此,只不过dubbo:service用于服务提供者端,而dubbo:reference用于服务消费者端。
#java开发工程师# #架构师# #诗和远方#
![f1b65c08249c03f218dfa7c88b3f2ebd.png](https://i-blog.csdnimg.cn/blog_migrate/76ec799972ffb7479e886eb1b15044e0.jpeg)
学习工作之余,一起看看诗和远方:顺德伦教进士牌坊