1. 程式人生 > >簡易入門的Dubbo例項-自己建立的

簡易入門的Dubbo例項-自己建立的

使用maven工程建立

先建立介面端api,再建立服務提供端provider,最後建立服務消費端consumer

一、建立介面工程API

1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboapi,代表工程的名字:

2、建立介面和實體類

介面類定義如下:

package com.excel.dubboapi.intf;

import java.util.List;

import com.excel.dubboapi.model.Product;

public

interface IProductService {

    public List<Product> listAllProducts();

    public Product getProductById(int id);

}

實體類定義如下:

package com.excel.dubboapi.model;

import java.io.Serializable;

public class Product implements Serializable{

    private static final long serialVersionUID = -4177152068720868250L;

    private int id;

    private String code;

    private String name;

    private String remark;

}

自行補齊gettter、setter方法。

到此完成了介面端的建立,介面類不需要依賴任何jar包。

二、建立服務提供端Provider

1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboprovider,代表工程的名字:

截圖省略。。。。仿照前面的建立過程即可。

2、修改pom.xml檔案

設定需要的jar包,pom.xml檔案內容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.excel</groupId>

    <artifactId>dubboprovider</artifactId>

    <version>1.0.0</version>

    <packaging>jar</packaging>

    <name>dubboprovider</name>

    <url>http://maven.apache.org</url>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

    <dependencies>

        <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>dubbo</artifactId>

            <version>2.6.2</version>

        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->

        <dependency>

            <groupId>org.apache.zookeeper</groupId>

            <artifactId>zookeeper</artifactId>

            <version>3.4.13</version>

        </dependency>

        <!-- need curator,if not,it will case exception: java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy -->

        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->

        <dependency>

            <groupId>org.apache.curator</groupId>

            <artifactId>curator-recipes</artifactId>

            <version>4.0.1</version>

        </dependency>

        <dependency>

            <groupId>com.excel</groupId>

            <artifactId>dubboapi</artifactId>

            <version>1.0.0</version>

        </dependency>

    </dependencies>

</project>

在provider端,必須要有dubbo、zookeeper、curator-recipes這3個jar包。

由於要實現api,則需要加入dubboapi的包,也就是前面的介面端的工程。

3、建立介面實現類

3.1src/main/java目錄下,建立com.excel.dubboprovider.main包,用於存放啟動dubbo容器的Main函式,具體如下:

package com.excel.dubboprovider.main;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ProviderMain {

    public static void main(String[] args) {

        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("classpath:prodiver-zookeeper.xml");

        app.start();

        System.out.println("Provider Server Started!");

        try {

            System.out.println("Input Anything will stop the Provider Server");

            System.in.read();

            app.close();

            System.out.println("Provider Server Stoped!");

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

3.2src/main/java目錄下,建立com.excel.dubboprovider.service.impl包,用於存放實現介面方法的實現類,具體如下:

package com.excel.dubboprovider.service.impl;

import java.util.ArrayList;

import java.util.List;

import com.excel.dubboapi.intf.IProductService;

import com.excel.dubboapi.model.Product;

public class ProductServiceImpl implements IProductService{

    public List<Product> listAllProducts() {

        List<Product> list = new ArrayList<>();

        for (int i = 0; i < 100; i++) {

            Product product = new Product();

            product.setId(100+i);

            product.setCode("P"+i);

            product.setName("Product"+i);

            product.setRemark("Remark Product"+i);

            list.add(product);

        }

        return list;

    }

    public Product getProductById(int id) {

        Product product = new Product();

        product.setId(100+id);

        product.setCode("P"+id);

        product.setName("Product"+id);

        product.setRemark("Remark Product"+id);

        return product;

    }

}

4、設定dubbo的配置

4.1src/main/resources目錄下,建立prodiver-zookeeper.xml,用於設定dubbo的服務提供端的配置資訊,具體如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"

       xmlns="http://www.springframework.org/schema/beans"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- provider's application name, used for tracing dependency relationship -->

    <dubbo:application name="dubboprovider" />

    <!-- use zookeeper registry center to export service -->

    <dubbo:registry protocol="zookeeper" address="10.4.2.206:2181"/>

    <!-- service implementation, as same as regular local bean -->

    <bean id="demoService" class="com.excel.dubboprovider.service.impl.ProductServiceImpl"/>

    <!-- declare the service interface to be exported -->

    <dubbo:service interface="com.excel.dubboapi.intf.IProductService" ref="demoService"/>

</beans>

期間可能需要調整一下JDK的編譯版本,這裡使用了jdk8.

到這裡,就完成了服務提供端Provider的開發。

在啟動服務提供端Provider之前,需要先啟動zookeeper服務,即在D:\zookeeper-3.4.13\bin目錄下,雙擊zkServer.cmd檔案執行。如果還沒有zookeeper,請先自行下載並解壓。

在ProviderMain類,點選右鍵開始執行即可,得出控制檯的資訊如下:

不要關閉,讓它保持啟動狀態。

此時再到zookeeper的客戶端看服務是否註冊上去。

到D:\zookeeper-3.4.13\bin目錄下,雙擊zkCli.cmd檔案執行,然後輸入ls /,得出介面如下:

再輸入ls /dubbo,得出如下介面:

可以看到我們的介面已經存在了,說明啟動成功了。

三、建立消費服務端Consumer

1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboconsumer,代表工程的名字:

截圖省略。。。。仿照前面的建立過程即可。

2、修改pom.xml檔案

設定需要的jar包,pom.xml檔案內容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.excel</groupId>

    <artifactId>consumer</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>jar</packaging>

    <name>consumer</name>

    <url>http://maven.apache.org</url>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

    <dependencies>

        <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>dubbo</artifactId>

            <version>2.6.2</version>

        </dependency>

        <!-- need curator,if not,it will case exception: java.lang.NoClassDefFoundError:

            org/apache/curator/RetryPolicy -->

        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->

        <dependency>

            <groupId>org.apache.curator</groupId>

            <artifactId>curator-recipes</artifactId>

            <version>4.0.1</version>

        </dependency>

        <dependency>

            <groupId>com.excel</groupId>

            <artifactId>dubboapi</artifactId>

            <version>1.0.0</version>

        </dependency>

    </dependencies>

</project>

3、建立介面實現類

3.1src/main/java目錄下,建立com.excel.dubboconsumer.main包,用於存放啟動dubbo容器的Main函式,具體如下:

package com.excel.consumer;

import java.util.List;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.excel.dubboapi.intf.IProductService;

import com.excel.dubboapi.model.Product;

public class ConsumerMain {

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:consumer_zookeeper.xml"); 

        context.start(); 

        System.out.println("dubbo consumer start here"); 

        IProductService customerService =  (IProductService) context.getBean("consumerService"); 

        List<Product> list = customerService.listAllProducts();

        System.out.println("Dubbo consumer//Dubbo服務消費端執行"); 

        System.out.println("=======================================================");

        if (list.isEmpty()) {

        System.out.println("customer list empty ");

        } else {

            int idx = 1;

            for (Product customer : list) {

                System.out.println("customer: {}"+idx);

                System.out.println("customer name: {}"+ customer.getName());

                System.out.println("customer code: {}"+ customer.getCode());

                System.out.println("customer Remark: {}"+ customer.getRemark());

                System.out.println("customer Id: {}"+ customer.getId());

                System.out.println("");

                idx++;

            }

        }

        System.out.println("=======================================================");

        context.close();

    }

}

4、設定dubbo的配置

4.1src/main/resources目錄下,建立consumer-zookeeper.xml,用於設定dubbo的服務消費端的配置資訊,具體如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"

       xmlns="http://www.springframework.org/schema/beans"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--定義消費方應用資訊,用於計算依賴關係;在 dubbo-admin dubbo-monitor 會顯示該名字,方便識別--> 

    <dubbo:application name="dubboConsumer" owner="programmer" organization="dubbox"/> 

    <!--使用 zookeeper 註冊中心暴露服務,注意要先開啟 zookeeper,配置見conf資料夾下,預設zoo.cfg--> 

    <dubbo:registry address="zookeeper://localhost:2181"/>

    <!-- generate proxy for the remote service, then demoService can be used in the same way as the

    local regular interface -->

    <dubbo:reference id="consumerService" check="false" interface="com.excel.dubboapi.intf.IProductService"/>

</beans>

到此,消費端的程式碼也開發完畢。

ConsumerMain類裡,點選右鍵,執行,可以看到執行結果,如下:

相關推薦

簡易入門Dubbo例項-自己建立

使用maven工程建立 先建立介面端api,再建立服務提供端provider,最後建立服務消費端consumer 一、建立介面工程API 1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,arti

Maven入門實戰(一)——MVN的安裝、配置、生命週期、簡單入門例項建立父/子工程

1 Maven簡介  Maven是Apache旗下的一個開源專案,是純Java開發的一個專案管理工具,並且只是用來管理Java專案的。 1.1 Maven的好處  1)Maven專案佔用容量小 同樣的一個專案,如果是用Maven構建的話,專案的大小要小得多。(這是由於Ma

【必看】認識Vue,Vue快速入門,Vue如何建立一個例項?Vue的生命週期,什麼是鉤子函式?

認識Vue Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及各種支援類庫結合使

Windows10下的docker安裝與入門 (三) 建立自己的docker映象並且在容器中執行它

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。 本教程主要分以下幾點內容:  ------------

pythonocc入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner

已經更新的入門指導 PythonOCC入門指導:1.建立pythonocc虛擬環境 PythonOCC入門指導:2.執行一個簡單例項 PythonOCC入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner pythonocc基礎使用:1.讀入iges,step,stl檔

Docker網路管理機制例項解析+建立自己Docker網路

例項解析Docker網路管理機制(bridge network,overlay network),介紹Docker預設的網路方式,並建立自己的網路橋接方式,將開發的容器新增至自己新建的網路,提高Docker網路安全和通訊. 1.給自己的docker (Dcok

JBPM4入門——6.流程例項建立和執行

package com.test.test; import java.util.Iterator; import java.util.List; import org.jbpm.api.ProcessDefinition; import org.jbpm.api.ProcessDefinitionQuer

自己--建立核心自信

一件事 而是 是不是 人才 自身 吃飯 世界 大量 做什麽   一六年的年底,從上海的公司辭職,打算回濟南發展。那時正值深冬,剛到濟南就下起了大雪,拖著行李箱走在街上,無可名狀的疲憊感湧上來。匆匆四年,也就那麽過來了。   分手後的很長一段時間,生活的很難。後來漸漸調

next.js簡易入門

mkdir init nod 腳本 路由 瀏覽器 webpack 快的 基於 使用next.js,我們能像php一樣,通過js和react來創建可以服務器端渲染的應用。next.js有以下特性: 默認服務器端渲染 自動分割代碼以獲取更快的頁面載入速度 簡易的客戶端路由,基

ActiveMQ簡易入門

mqActiveMQ官方下載地址:http://activemq.apache.org/download.html 下載解壓後,執行bin目錄下activemq.bat啟動mq服務找到lib目錄並引入相關jar包Sender消息發送者類package com.ycj.activemq; import jav

[Swift4.2實際操作]九、完整例項-(3)建立和安裝開發證書、釋出證書及開發證書配置檔案、釋出證書配置檔案

本文將為你演示,如何建立開發證書和釋出證書,以及其他輔助內容。首先開啟瀏覽器,進入【蘋果開發者網站】輸入【Apple ID】和【密碼】,點選登入按鈕,進入開發者管理後臺。   點選左側的【Membership(會員關係)】,進入會員關係頁面,在會員狀態頁面,顯示了你的開發者賬號型別,組織資訊等,在此可以檢視賬

[Swift4.2實際操作]九、完整例項-(5)建立BaseViewController作為控制器的基類

本文將給專案中的所有檢視控制器,建立一份基類。該基類用來定義一些共用的屬性和方法。 首先在用來放置檢視控制器類的資料夾上點選滑鼠右鍵,開啟右鍵 選單。 選擇【New File】建立檔案選項。 在彈出的檔案模板選擇視窗中,保持預設的選項, 然後點選【Next】下一步按鈕,進入下一步設定頁面。輸入類名、父

[Swift4.2實際操作]九、完整例項-(6)建立App歡迎介面

1 import UIKit 2 3 class WelcomeViewController: BaseViewController { 4 5 override func viewDidLoad() { 6 super.viewDi

DbForge Query Builder for SQL Server入門教程:如何建立和編輯查詢

【dbForge Query Builder for SQL Server下載】 本問將說明如何在dbForge Query Builder for SQL Server中建立和編輯SQL查詢。 要建立查詢: 1. 建立伺服器連線。 2. 在“Standard” 工具欄上,單擊“Ne

Android開發入門經典例項

開發例項概述 今天帶大家做一個簡單的Android App,這個App會顯示創新工程實踐老師們的照片和資訊,不妨先看一看效果: 雖然這個App非常簡單,但是涉及到了Android開發中的一些關鍵知識,比如: 配置開發環境 App中一個螢幕的抽象:Activity

爬蟲簡易入門程式碼-爬取簡單網頁圖片

# -*- coding: utf-8 -*- """ Created on Mon Jul  9 22:12:07 2018 @author: name """ #!/usr/bin/env Python3 # -*- encodin

例項建立一個表格,分頁顯示資料(MongoDB資料庫儲存),功能:實現增刪改查

需求:建立一個表格,分頁顯示資料,功能:實現增刪改查 效果圖: 自動建立一個專案 命令列: express mongodb-demo --view=ejs cd mongodb-demo npm install npm install mongodb --save npm sta

struts1簡單入門使用例項

1、新增相關jar包 struts.jar、 commons-logging-1.1.jar 、commons-digester.jar、commons-beanutils.jar 2、web.xml配置     <servlet>&nbs

HOOK API入門之Hook自己程式的MessageBoxW

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PyCharm入門第一步:建立並執行第一個Python專案

步驟1:建立並執行您的第一個Python專案 在你開始之前 確保滿足以下先決條件: 您正在使PyCharmCE或Professional。 您已經安裝了Python本身。如果您使用的是macOS或Linux,那麼您的計算機已經安裝了Python。你可以從python.org獲