Dubbo---快速搭建一個Dubbo項目

快速搭建一個dubbo項目。
首先搭建好zookeeper註冊中心,這裏是windows,下載好zookeeper壓縮包,解壓,啓動,壓縮包裏–>bin–>zkServer.cmd
在這裏插入圖片描述
ZK啓動成功,注意,不要關閉這個控制檯。

服務提供端:
建立一個項目,dubboProvider,pom.xml中添加依賴

<properties>
        <dubbo.version>2.5.3</dubbo.version>
        <spring.version>4.3.6.RELEASE</spring.version>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
    
<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- spring相關 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.6.11</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.11</version>
        </dependency>
        
    </dependencies>

提供服務,所謂的服務是一個接口。

public interface ProviderDemoService {
    
    String sayHello();
}

服務的實現類

public class ProviderDemoServiceImpl implements ProviderDemoService {

    @Override
    public String sayHello(){
        String str = "hello,我是服務提供方!";
        return str;
    }
}

配置服務提供方的配置,新建一個dubbo-provider.xml

<!--提供方應用信息,用於計算依賴關係-->
    <dubbo:application name="dubbo_provider"/>
    <!--使用zookeeper註冊中心暴露服務地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--使用dubbo協議,在端口20880端口暴露服務-->
    <dubbo:protocol name="dubbo" port="20880"/>
    <!--聲明需要暴露的服務接口-->
    <dubbo:service interface="service.ProviderDemoService" ref="providerDemoService"/>

    <bean id="providerDemoService" class="service.impl.ProviderDemoServiceImpl"/>

另外新建一個springContext.xml,引入dubbo-provider.xml,啓動類加載這個配置文件並啓動。

public class ProviderApplication {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:springContext.xml");
        applicationContext.start();
        System.out.println("Provider start........");
        System.in.read();
    }
}

此時,服務提供者就已啓動服務了。同時,我們可以通過zkCli.cmd連接ZK,查看zookeeper的節點變化。
在這裏插入圖片描述
我們發現在zookeeper新增了一個/dubbo節點,查看這個節點下的子節點,發現又有一個節點,就是我們配置的服務路徑名作爲的節點名。再往下,看這個節點下,會有什麼呢?
在這裏插入圖片描述
這節點裏都放了什麼呢?這個等下再說。

服務消費者
建立一個項目,dubboConsumer,pom.xml中添加的依賴如提供者一樣,不重複了。

建立本地服務接口

public interface ProviderDemoService {
    String sayHello();
}

配置服務消費者端dubbo-consumer.xml

<!--消費方應用信息-->
    <dubbo:application name="dubbo_consumer"/>
    <!--註冊中心暴露發現服務地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" protocol="zookeeper"/>
    <!--生成遠程服務代理-->
    <dubbo:reference interface="service.ProviderDemoService" id="providerDemoService"/>

新建springContext.xml引入dubbo-consumer.xml,在啓動類中加載配置文件springContext.xml,並調用服務接口。

public class ConsumerApplication {
    public static void main(String[] args) throws Exception{
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:springContext.xml");
        applicationContext.start();
        ProviderDemoService providerDemoService =(ProviderDemoService) applicationContext.getBean("providerDemoService");
        String str = providerDemoService.sayHello();
        System.out.println(str);
        System.in.read();
    }
}

最後控制檯輸出:

hello,我是服務提供方!

可以看出zk節點下的信息,
在這裏插入圖片描述

發佈了35 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章