SpringBoot-13 Dubbo實戰
- 2021 年 4 月 10 日
- 筆記
- springboot
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