1. 程式人生 > >Dubbo:自測自擬專案搭建consumer

Dubbo:自測自擬專案搭建consumer

建立maven專案之consumer,同建立provider一樣。 

pom新增:

先建立介面:

寫實現: 

寫實現邏輯:

package com.testDubo.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.testDubo.service.UserService;
import com.testDubo.service.UserServiceConsumer;
/**
 * 服務消費者程式碼
 * 不考慮Dubbo技術問題,只考慮當前物件在spring容易中的管理問題
 * @author Administrator
 *
 */
@Service //用spring的註解
public class UserServiceConsumerImpl implements UserServiceConsumer {

	//需要通過spring注入,注入的是介面的代理物件,由介面+訂閱的服務資訊+JDK的proxyy實現。
	//動態代理物件的具體建立邏輯由Dubbo技術提供
	//dubbo技術提供了reference註解,替代後續定義的標籤,有程式碼衝突。
	@Autowired
	private UserService userService; //呼叫provider的實現
	
	public void register(String name, String password) {

		//具體邏輯由provider提供
		System.out.println("cousumer呼叫provider的register...");
		//呼叫Provider程式碼,需要定義屬性,提供物件引用
		userService.register(name, password);//呼叫provider的實現
	}

	public void login(String name, String password) {

		System.out.println("consumer呼叫provider的login...");
		userService.login(name, password);//呼叫provider的實現
	}

}

然後配置檔案:

resource目錄下建立spring目錄

程式碼:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
        <!-- 1.配置dubbo的應用名稱-->
        <dubbo:application name="test-consumer-001"/>
        <!-- 2.配置dubbo的註冊中心-->
        <dubbo:registry address ="192.168.1.28:2181" protocol="zookeeper" />
        <!-- 3.配置dubbo的訂閱服務內容,要訂閱哪一個介面服務資訊
       			 consumer不需要定義協議,因為協議資訊由服務的提供者定義。
       			 reference - 引用,是要訂閱註冊中心中的服務資訊。
       			 訂閱成功後,在spring容器中,依賴容易和dubbo技術,建立代理物件。
       			 建立的代理物件命名為id屬性值。建議id屬性值命名和consumer中引用的屬性名稱一致。
       			 interface - 要訂閱的具體的服務介面命名,就是provider釋出的服務介面命名。
        -->
        <dubbo:reference interface="com.testDubo.service.UserService" id="userService" />
        
        
        <!-- 配置掃描spring註解 -->
        <context:component-scan base-package="com.testDubo.service"></context:component-scan>
        

</beans>

寫測試:

 

生產者消費者同時列印: