SpringBoot-13 Dubbo實戰
前提: 已經準備好Dubbo-admin和Zookeeper
前置準備
1.建立專案
顯示建立一個Empty Project,建立兩個Module--->consumer-server以及provider-server:
這是建立成功的結構。
2.匯入依賴
兩個Module都匯入下方依賴:
<!-- dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!-- zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
搭建專案
1.提供者
1.1 Service層
建立一個Service資料夾:
public interface TicketService {
public String getTicket();
}
@Service
@Component
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "這是一個getTicket()";
}
}
注意:
這裡的@Component是Spring下的註解,但是@Service應該使用的是Dubbo下的註解
用了Dubbo儘量不要用@Service,如果要使用,記得分清楚Spring和Dubbo註解的不同
1.2 配置資訊
server.port=8001
# 服務應用名字
dubbo.application.name=provider-server
# 註冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 註冊服務
dubbo.scan.base-packages=com.zc.Service
1.3 檢視Dubbo的消費者
- 開啟Zookeeper的伺服器
- 執行Dubbo-admin打包的jar包
java -jar xxxx.jar
- 執行消費者Module
2.消費者
2.1 Service層
@Service
public class UserService {
//想拿到 提供者 提供的東西,要去註冊中心拿
@Reference //引用
TicketService ticketService;
public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("拿到啦---"+ticket);
}
}
-
這裡的@Service是將該類注入到Spring容器,使用的Spring的註解
-
這裡 TicketService ticketService; 會報錯,因為在 consumer-server 中沒有 TicketService 這個介面。
所以,我們把這個介面複製過來:
public interface TicketService {
public String getTicket();
}
這樣就可以使用了,Dubbo會自動給你引用提供者的實現類。
2.2 配置資訊
server.port=8002
# 消費者拿服務路徑
dubbo.application.name=consumer-server
# 註冊中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
消費者與提供者的不同:
提供者配置資訊不需要註冊服務,消費者提供地址,消費者只需要拿到服務。
3.執行測試
在consumer-server中的test中進行測試:
@SpringBootTest
class ConsumerServerApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
userService.buyTicket();
}
}
小結
前提:Zookeeper已經開啟
-
提供者提供服務
- 匯入依賴
- 配置註冊中心的地址,以及服務發現名,和要掃描的包~
- 在想要被註冊的服務上面-增加一個註解@Servicel,dubbo的
-
消費者如何消費
- 匯入依賴
- 配置註冊中心的地址,配置自己的服務名-
- 從遠端注入服務1
個人部落格為:
MoYu's HomePage
MoYu's Gitee Blog