首页 > 其他 > 详细

7、Dubbo-配置(2)

时间:2019-03-04 23:39:44      阅读:192      评论:0      收藏:0      [点我收藏+]

重试次数

通常配合timeout超时设置进行配置

技术分享图片

     <dubbo:reference interface="com.cr.service.UserService"  id="userService"  timeout="2000">
     </dubbo:reference>

 

 技术分享图片

     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
          <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  
此时是报错的!!!

 技术分享图片

 

 

retries:默认会执行一次
retries="3"时会执行4次

进行测试

public class UserServiceImpl  implements UserService {
     @Override
     public List<UserAddress> getUserAddressList(String userId)  {
           System.out.println("正在执行请求!!!");
           UserAddress address1 = new UserAddress(1, "安徽合肥蜀山区", "2", "程老师", "", "12345");
           UserAddress address2 = new UserAddress(2, "安徽合肥包河区", "2", "程老师", "", "12345");
           List<UserAddress> list = new  ArrayList<UserAddress>();
           list.add(address2);
           list.add(address1);
           try {
                Thread.sleep(4000);
           } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
           }
           return list;
     }
}

 

 技术分享图片

<dubbo:reference interface="com.cr.service.UserService"  id="userService" 
     timeout="1000" retries="3"> </dubbo:reference>

 

 技术分享图片

     <!-- 4、暴露服务 -->   
     <!-- interface是只想接口,ref属性是指定接口的实现 -->   
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
      <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  

 

此时进行测试:
打印了四次:

技术分享图片

重试了四次才进行连接成功:

技术分享图片

 

如果服务端口多的话,会重试进行其他提供者的服务进行连接

<dubbo:protocol name="dubbo" port="20080"></dubbo:protocol>       
     
<dubbo:protocol name="dubbo" port="20081"></dubbo:protocol>     
     <!-- 4、暴露服务 -->   
     <!-- interface是只想接口,ref属性是指定接口的实现 -->   
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl">
      <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  

 

幂等可以设置重试次数(查询、删除、修改)
非幂等不可以进行重试次数(新增)
retries=0代表不重试

 

多版本

 技术分享图片

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
可以按照以下的步骤进行版本迁移:
  1. 在低压力时间段,先升级一半提供者为新版本
  2. 再将所有消费者升级为新版本
  3. 然后将剩下的一半提供者升级为新版本

测试:

技术分享图片

技术分享图片

 

 技术分享图片

 

技术分享图片

     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl" version="1.0.0">
          <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  
     <bean id="userServiceImpl"   class="com.cr.service.impl.UserServiceImpl"></bean>       
            
            
     <dubbo:service interface="com.cr.service.UserService"  ref="userServiceImpl2" version="2.0.0">
          <dubbo:method name="getUserAddressList"  timeout="4000"></dubbo:method>
     </dubbo:service>  
     <bean id="userServiceImpl2"   class="com.cr.service.impl.UserServiceImpl2"></bean>    

 

 技术分享图片

 <dubbo:reference interface="com.cr.service.UserService"  id="userService" 
      timeout="1000" retries="3" version="1.0.0"> </dubbo:reference>

 

此时的测试结果:

主程序重试未成功连接:

技术分享图片

 

服务提供者打印:

技术分享图片

 

如果消费者中version=“*”代表任意的

技术分享图片

技术分享图片

 

7、Dubbo-配置(2)

原文:https://www.cnblogs.com/Mrchengs/p/10474058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!