一、zookeeper的下載安裝,這個百度很多,略,附下載地址
http://archive.apache.org/dist/zookeeper/
本文使用的是zookeeper 3.4.14版本
二、創建工程
-
首先創建一個空的工程
-
在工程下創建三個模塊,分別是consumen(消費者)、procider(生產者)、dubbo-api(專門用於存放dubbo服務接口的模塊)
依次創建三個模塊 -
dubbo是通過全限定名去匹配服務的,生產者和消費者都要有同樣全限定名的服務接口類才能實現調用,所以此處將所有的服務接口都寫在dubbo-api模塊中,而後consumer和provider都依賴dubbo-api這個模塊,
所以在consumer和provider的pom.xml文件中引入對dubbo-api模塊的依賴
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
三、代碼編寫
- 在dubbo-api中創建一個服務接口類
package com.example.dubboapi.service;
public interface TicketService {
String providerTicker();
}
- 生產者實現dubbo-api中的服務接口
1、首先,導入springboot和dubbo整合的啓動器
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2、實現dubbo-api中的服務接口類
package com.joe.provider.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.dubboapi.service.TicketService;
import org.springframework.stereotype.Component;
@Service // 注意這個註解是dubbo的註解,用於將服務發佈出去
@Component
public class TicketServiceImpl implements TicketService {
@Override
public String providerTicker() {
return "《我和我的祖國》";
}
}
3、啓動類配置@Enable註解
package com.joe.provider;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
4、配置文件配置zookeeper地址及服務包掃描路徑
# 應用名稱
dubbo.application.name=provider
# zookeeper註冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 掃描的服務包路徑
dubbo.scan.base-packages=com.joe.provider.service,com.joe.provider.service.impl
- 消費者調用服務(此處在測試類中測試)
1、導包
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2、配置文件配置
# 應用名
dubbo.application.name=consumer
# zookeeper註冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
3、測試方法
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@EnableDubbo // 開啓dubbo自動配置
class ConsumerApplicationTests {
/**
* 通過@reference將服務注入
*/
@Reference
TicketService ticketService;
@Test
void contextLoads() {
String s = ticketService.providerTicker();
System.out.println(s);
}
}
四、測試
- 先啓動provider工程可以看到控制檯服務發佈的日誌
- 之後運行消費者ConsumerApplicationTests.contextLoads測試方法,可以看到控制檯輸出
- 完成