Dubbo 測試用例 獲取註冊中心的其他服務
阿新 • • 發佈:2022-04-12
package com.xyebank.uk.user.service; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ReferenceConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.fastjson.JSONObject; import com.xyebank.uk.bill.api.BillUserAmountService; import com.xyebank.uk.bill.api.vo.out.BalanceOutVo; import com.xyebank.uk.user.api.UserInfoService; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public class DubboTests { //這種方式也可以取到註冊中心的服務(區別在於,這種方式取到的服務,優先是本地服務,取不到才取 遠端服務) @Autowired UserInfoService userInfoService; //這種方式也可以取到註冊中心的服務 @Autowired BillUserAmountService billUserAmountService; @Test public void getService() throws Exception { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("test"); RegistryConfig registry = new RegistryConfig(); registry.setAddress("zookeeper://127.0.0.1:2181"); //通過這種方式可以獲取註冊中心的服務 ReferenceConfig<BillUserAmountService> reference = new ReferenceConfig<>(); reference.setApplication(applicationConfig); reference.setRegistry(registry); reference.setInterface(BillUserAmountService.class); reference.setVersion("1.0.0"); ReferenceConfig<UserInfoService> referenceUS = new ReferenceConfig<>(); referenceUS.setApplication(applicationConfig); referenceUS.setRegistry(registry); referenceUS.setInterface(UserInfoService.class); referenceUS.setVersion("1.0.0"); BillUserAmountService billUserAmountService2 = reference.get(); UserInfoService userInfoService2 = referenceUS.get(); System.out.println("取到的服務userInfoService:" + userInfoService ); System.out.println("取到的服務userInfoService2:" + userInfoService2 ); System.out.println("取到的服務billUserAmountService:" + billUserAmountService ); System.out.println("取到的服務billUserAmountService2:" + billUserAmountService2 ); System.out.println("取到的服務:" + JSONObject.toJSONString( userInfoService.queryById(444455694863835136L) ) ); System.out.println("取到的服務billUserAmountService:" + JSONObject.toJSONString( billUserAmountService.getBalance(444455694863835136L) ) ); System.out.println("取到的服務billUserAmountService2:" + JSONObject.toJSONString( billUserAmountService2.getBalance(444455694863835136L) ) ); } }
結果:可見 注入方式優先獲取的 本地服務。通過 ReferenceConfig 只會獲取到遠端服務。