Dubbo:自測自擬專案搭建consumer
阿新 • • 發佈:2018-12-15
建立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>
寫測試:
生產者消費者同時列印: