SpringBoot-13 Dubbo實戰

zc發表於2021-04-10

SpringBoot-13 Dubbo實戰

前提: 已經準備好Dubbo-admin和Zookeeper

前置準備

1.建立專案

顯示建立一個Empty Project,建立兩個Module--->consumer-server以及provider-server

1

這是建立成功的結構。

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註解的不同

2

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

3

4

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();
    }
}

6

小結

前提:Zookeeper已經開啟

  1. 提供者提供服務

    1. 匯入依賴
    2. 配置註冊中心的地址,以及服務發現名,和要掃描的包~
    3. 在想要被註冊的服務上面-增加一個註解@Servicel,dubbo的
  2. 消費者如何消費

    1. 匯入依賴
    2. 配置註冊中心的地址,配置自己的服務名-
    3. 從遠端注入服務1

個人部落格為:
MoYu's HomePage
MoYu's Gitee Blog

相關文章