1. 程式人生 > 其它 >Dubbo 測試用例 獲取註冊中心的其他服務

Dubbo 測試用例 獲取註冊中心的其他服務

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 只會獲取到遠端服務。