實驗環境:win7 64,idea2018.3.3
環境搭建
1、新建一個空項目
2、然后添加一個maven模塊作為父模塊名字為ticketparent
3、然后添加一個spring模塊名字為supplier-ticket用來生產對象
4、然后再添加一個spring模塊名字為consumer-user用來消費
5、給maven父模塊再指定一層父模塊
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
6、給父模塊添加依賴
<properties> <spring-boot.version>2.1.1.RELEASE</spring-boot.version> <dubbo.version>2.7.0</dubbo.version> </properties> <dependencyManagement> <dependencies> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Aapche Dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-bom</artifactId> <version>${dubbo.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Dubbo Spring Boot Starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> </dependency> </dependencies>
7、給consumer-user和supplier-ticket這兩個spring模塊指定ticketparent為父模塊
如果pom提升出錯這里把之前那個springboot父模塊代替掉然后刪除groupId就可以了
8、現在需要客戶端工具連接zookeeper因為不管是消費者還是生產者我們都需要連接zookeeper所以
我們在父模塊再次添加dependence添加curator客戶端工具比較多要導三個包
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency><dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency><dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
編寫代碼
1、給supplier-ticket這個模塊新建一個接口
2、然后再新建一個實現類 然后添加Service注解注意是org.apache.dubbo.config.annotation.Service這個包
3、然后在supplier-ticket這個模塊下application.perproties文件中下面三條屬性
spring.application.name=supplier-ticket
#路徑是你主機的路徑
dubbo.registry.address=zookeeper://192.168.3.108:2181
#掃描這個包下帶@Service注解的類 注意這個包名很重要這里寫什么消費者那邊也要寫什么
dubbo.scan.base-packages=com.vawu.service
4、啟動supplier-ticket
6、把service包粘貼到consumer-user下 再次強調兩個模塊的包名必須相同不然無法分布式獲取對象
7、再次在application.properties文件中寫入下面的配置和上面一樣只不過不用配置掃描包了
spring.application.name=supplier-ticket
#路徑是你主機的路徑
dubbo.registry.address=zookeeper://192.168.3.108:2181
8、在ConsumerUserApplicationTests測試類中寫下面的代碼,這個Reference別引錯了還是dubbo包下的
運行結果
2019-03-17