• 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=“*”代表任意的

  • 相关阅读:
    firstresponder 后,键盘不显示
    performSelector
    setNeedsDisplay、setNeedsLayout 区别
    Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
    GCD介绍(一):基本概念和dispatch queues
    一些概念
    /mnt/sdcard /sdcard
    eclipse 导入已存在的工程文件出错
    ios 常用技巧
    ios nsstring去掉换行符
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10474058.html
Copyright © 2020-2023  润新知