zoukankan      html  css  js  c++  java
  • 7、Dubbo-配置(2)

    重试次数

    通常配合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=“*”代表任意的

  • 相关阅读:
    mORMot使用基础 2 数据库连接
    【Effective C++】继承与面向对象设计
    【Effective C++】实现
    【Effective C++】设计与声明
    【Effective C++】资源管理
    【Effective C++】构造/析构/赋值运算
    【Effective C++】让自己习惯C++
    【网络基础】计算机网络常考知识点整理
    【C++基础学习】成员对象与对象数组
    C++编程规范纲要要点小结
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10474058.html
Copyright © 2011-2022 走看看