通常配合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>
进行测试
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>
测试:
<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>
此时的测试结果:
主程序重试未成功连接:
服务提供者打印:
原文:https://www.cnblogs.com/Mrchengs/p/10474058.html