7、Dubbo-配置(2)
阿新 • • 發佈:2019-03-05
ted 進行 trie 2.0 clas http 程序 info @override
重試次數
通常配合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代表不重試
多版本
當一個接口實現,出現不兼容升級時,可以用版本號過渡,版本號不同的服務相互間不引用。 可以按照以下的步驟進行版本遷移:
- 在低壓力時間段,先升級一半提供者為新版本
- 再將所有消費者升級為新版本
- 然後將剩下的一半提供者升級為新版本
測試:
<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)