Dubbo-消費者直連服務者的三種方式


dubbo:reference中配置url

<dubbo:reference interface="org.apache.dubbo.demo.DemoService" url="dubbo://localhost:20880" />

通過 -D 參數指定 

java -Dorg.apache.dubbo.demo.DemoService=dubbo://localhost:20880

通過文件映射  

  如果服務比較多,也可以用文件映射,用 -Ddubbo.resolve.file 指定映射文件路徑

java -Ddubbo.resolve.file=resolve.properties

resolve.properties
org.apache.dubbo.demo.DemoService=dubbo://localhost:20880
org.apache.dubbo.demo.HelloService=dubbo://localhost:20880

ReferenceConfig#resolveFile

public void resolveFile() {
	// 從系統變量中獲取與接口名對應的屬性值 java -Dorg.apache.dubbo.demo.DemoService=dubbo://localhost:20880
	String resolve = System.getProperty(interfaceName);
	String resolveFile = null;
	if (StringUtils.isEmpty(resolve)) {
		// 從系統屬性中獲取解析文件路徑 java -Ddubbo.resolve.file=resolve.properties
		resolveFile = System.getProperty("dubbo.resolve.file");
		if (StringUtils.isEmpty(resolveFile)) {
			// 從指定位置加載配置文件
			File userResolveFile = new File(new File(System.getProperty("user.home")), "dubbo-resolve.properties");
			if (userResolveFile.exists()) {
				// 獲取文件絕對路徑
				resolveFile = userResolveFile.getAbsolutePath();
			}
		}
		if (resolveFile != null && resolveFile.length() > 0) {
			Properties properties = new Properties();
			try (FileInputStream fis = new FileInputStream(new File(resolveFile))) {
				// 從文件中加載配置
				properties.load(fis);
			} catch (IOException e) {
				throw new IllegalStateException("Failed to load " + resolveFile + ", cause: " + e.getMessage(), e);
			}

			// 獲取與接口名對應的配置
			resolve = properties.getProperty(interfaceName);
		}
	}
	if (resolve != null && resolve.length() > 0) {
		// 將 resolve 賦值給 url
		url = resolve;
		if (logger.isWarnEnabled()) {
			if (resolveFile != null) {
				logger.warn("Using default dubbo resolve file " + resolveFile + " replace " + interfaceName + "" + resolve + " to p2p invoke remote service.");
			} else {
				logger.warn("Using -D" + interfaceName + "=" + resolve + " to p2p invoke remote service.");
			}
		}
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM