Dubbo系列七:配置文件

本文深入解析Dubbo微服务框架的配置原则与覆盖规则,包括JVM参数、XML、Properties配置优先级,启动检查、超时时间、重试次数、多版本、本地存根等关键配置项的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、配置原则
在这里插入图片描述
JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。在与SpringBoot整合中,XML与SpringBoot配置文件一样。
Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。
2、配置的覆盖规则
 方法级优先,接口级次之,全局配置再次之。
 如果级别一样,则消费方优先,提供方次之。
在这里插入图片描述
3、启动时检查check

<!-- 配置当前消费者的统一规则:关闭所有服务的启动时检查(没有提供者时报错) -->
<dubbo:consumer check="false"></dubbo:consumer>

4、设置超时时间timeout
 在消费者端设置

<!-- 声明要调用的远程服务的接口;生成远程服务代理 -->
<!-- timeout设置超时,调用的接口在指定时间内没有返回,立即终止;默认值是1000毫秒-->
<dubbo:reference interface="com.atguigu.gmall.service.UserService"
				 id="userService" timeout="5000">
	<!-- 方法级优先,接口次之,全局配置再次之。如果级别一致,消费方优先,提供方次之 -->
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:reference>

<!-- 配置当前消费者的统一规则:关闭所有服务的启动时检查(没有提供者时报错) -->
<dubbo:consumer check="false" timeout="5000"></dubbo:consumer>

 在提供者端设置

<!-- 暴露提供服务的接口,ref指向提供服务的接口的实现类 -->
<!-- timeout设置超时,调用的接口在指定时间内没有返回,立即终止;默认值是1000ms-->
<dubbo:service interface="com.atguigu.gmall.service.UserService"
			   ref="userServiceImpl" timeout="1000">
	<!-- 方法级优先,接口次之,全局配置再次之。如果级别一致,消费方优先,提供方次之 -->
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>

<!-- 统一设置服务提供方的规则 -->
<dubbo:provider timeout="1000"></dubbo:provider>

5、重试次数retries

<!-- 声明要调用的远程服务的接口;生成远程服务代理 -->
<!-- timeout设置超时,调用的接口在指定时间内没有返回,立即终止;默认值是1000毫秒-->
<!-- retries设置重试次数,不包含第一次调用 -->
<dubbo:reference interface="com.atguigu.gmall.service.UserService"
				 id="userService" timeout="5000" retries="3">
</dubbo:reference>

6、多版本version
 在提供者端提供多个版本服务

<dubbo:service interface="com.atguigu.gmall.service.UserService"
			   ref="userServiceImpl01" timeout="1000" version="1.0.0">
<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>
<bean id="userServiceImpl01" class="com.atguigu.gmall.service.impl.UserServiceImpl01"></bean>


<dubbo:service interface="com.atguigu.gmall.service.UserService"
			   ref="userServiceImpl02" timeout="1000" version="2.0.0">
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>
<bean id="userServiceImpl02" class="com.atguigu.gmall.service.impl.UserServiceImpl02"></bean>

 在消费者端通过version指定服务的版本

<dubbo:reference interface="com.atguigu.gmall.service.UserService"
			 id="userService" timeout="5000" retries="3" version="2.00">
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:reference>

7、本地存根stub
 编写本地存根UserServiceStub 。它会在真正调用之前做一些验证

public class UserServiceStub implements UserService {

    private final UserService userService;

    /**
     * dubbo会自动创建本地存根对象,会传入userService的远程代理对象
     * @param userService
     */
    public UserServiceStub(UserService userService) {
        this.userService = userService;
    }

    public List<UserAddress> getUserAddressList(String userId) {
        System.out.println("UserServiceStub....");
        if(!StringUtils.isEmpty(userId)){
            return userService.getUserAddressList(userId);
        }
        return null;
    }
}

 配置本地存根

<!-- 声明要调用的远程服务的接口;生成远程服务代理 -->
<!-- timeout设置超时,调用的接口在指定时间内没有返回,立即终止;默认值是1000毫秒-->
<!-- retries设置重试次数,不包含第一次调用 -->
<!-- stub配置本地存根 -->
<dubbo:reference interface="com.atguigu.gmall.service.UserService"
				 id="userService" timeout="5000" retries="3" stub="com.atguigu.gmall.service.impl.UserServiceStub">
	<!-- 方法级优先,接口次之,全局配置再次之。如果级别一致,消费方优先,提供方次之 -->
	<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:reference>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值