Dubbo

(一)优先级:

1. 配置方式优先级:

  • JVM -D参数
  • XML
  • Properties

2. 配置优先级:

  • 方法级优先,接口级次之,全局配置再次之;
  • 如果级别一样,则消费方优先,提供方次之。

(二)check(启动时检查)

在启动服务时检查相关服务是否可用;

默认check=true,即启动服务时检查有没有可用服务,如果没有启动时报错;

check=false,启动时不检查,只有在调用时才去检查有没有可用服务,没有则报错。

1. 针对单个服务配置:

<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" check="false"/>

2. 统一设置所有消费者服务配置:

<dubbo:consumer check="false"/>

3. 启动时对注册中心的检查:

注册中心不存在时是否报错,默认check=true

<dubbo:registry check="false"/>

4. dubbo.properties配置:

dubbo.reference.com.jcx.dubbo.demo.service.IDemoService.check=false
dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry.check=false

(三)timeout(超时设置):

服务消费者引用提供者在指定时间内没返回,则终止;单位为ms;默认是1000ms

1. 针对单个服务配置:

<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" timeout="5000"/>

2. 针对具体方法配置:

<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService">
    <dubbo:method name="sayHello" timeout="3000"/>
</dubbo:reference>>

3. 统一设置所有提供配置:

<dubbo:provider timeout="5000"/>

注:建议超时时间都配置在消费方

(四)retries(重试次数):

不包含第一次调用,若设置retries="3"则共调用4次;

如果提供方存在多个,会调用其他提供者,总数加起来为4次,若调用成功则终止;

<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" retries="3"/>

注:如果为幂等(多次调用结果相同)操作,可配置重试次数,如数据库查询等操作;非幂等操作,则不配置重试次数,如数据库新增等操作。

(五)version(多版本):

provider:

<!--老版本-->
<dubbo:service interface="com.jcx.dubbo.demo.service.IDemoService" version="1.0.0"/>

<!--新版本-->
<dubbo:service interface="com.jcx.dubbo.demo.service.IDemoService" version="2.0.0"/>

consumer:

<!--调用老版本-->
<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" version="1.0.0"/>

<!--调用新版本-->
<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" version="2.0.0"/>

<!--不区分版本,随机调用-->
<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" version="*"/>

(六)stub(本地存根):

服务消费者对调用真正实现之前对参数进行验证或者缓存等操作,判断是否满足要求再做调用

本地存根代码实现:

import com.jcx.dubbo.demo.service.IDemoService;
import org.springframework.util.StringUtils;

/**
 * 本地存根实现类
 */
public class DemoServiceStubImpl implements IDemoService {

    private final IDemoService demoService;

    /**
     * 必须要有有参构造,传入真正的远程代理对象
     *
     * @param demoService 远程代理对象
     */
    public DemoServiceStubImpl(IDemoService demoService) {
        super();
        this.demoService = demoService;
    }

    public String sayHello(String userName) {
        if (!StringUtils.isEmpty(userName)) {
            return demoService.sayHello(userName);
        }
        return null;
    }
}

配置:

<dubbo:reference id="demoService" interface="com.jcx.dubbo.demo.service.IDemoService" stub="com.jcx.dubbo.demo.service.impl.DemoServiceStubImpl"/>
原文地址:https://www.cnblogs.com/s-star/p/12510698.html