天天看點

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

現在越來越多的公司開發項目中使用了springboot作為搭建服務的架構,而dubbo是一款國内使用較多的SOA架構開發的中間件,其主要由三個部分組成:生産者,消費者,注冊中心。注冊中心一般使用的是zookeeper。于是我們從頭來捋一捋如何搭建一個springboot+dubbo項目。

第一步,本地搭建zookeeper注冊中心

請參考文章:springboot整合dubbo+zookeeper(一)

第二步,本地搭建dubbo監控控台dubbo-admin

請參考文章:springboot整合dubbo+zookeeper(二)

第三步,将服務注冊到zookeeper

  • 建立一個springboot項目

項目代碼結構如下:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper
  • 服務接口定義
package com.dubbo.service;/** * @author test * @time 2019/8/27 17:51 * @description: * 一些模拟資料庫事務的方法 */public interface TestService {    public void insert();    public void delete();    public void update();    public void select();}
           
  • 用到的兩個主要依賴包
org.apache.dubbo     dubbo-spring-boot-starter     2.7.7com.101tec      zkclient       0.10
           
  • 生産者相關代碼及配置

pom主要配置:

application.properties:
           

接口服務實作:

package com.dubbo.provider.service.impl;import com.alibaba.dubbo.config.annotation.Service;import com.dubbo.service.TestService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author test * @time 2019/8/27 15:35 * @description: * 模拟資料庫事務實作 */@Service(version = "1.0.0",timeout = 3000)public class TestServiceImpl implements TestService {    private Logger log = LoggerFactory.getLogger(TestServiceImpl.class);    @Override    public void insert() {        System.out.println("insert 服務");    }    @Override    public void delete() {        System.out.println("delete 服務");    }    @Override    public void update() {        System.out.println("update 服務");    }    @Override    public void select() {        System.out.println("select 服務");    }}
           

注意:添加@Service注解,切記注解不是用spring的service注解,是 com.alibaba.dubbo.config.annotation.Service,由阿裡提供的dubbo的注解,配上版本号1.0.0說明向zookeeper注冊的是版本為1.0.0的TestService接口,逾時時長為3000ms等資訊。

application.properties 參數配置:

com.dubbo.testprovider0.0.1-SNAPSHOTproviderorg.apache.dubbodubbo-spring-boot-starter2.7.7com.101teczkclient0.10
           

啟動類:

package com.dubbo.provider;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class ProviderApplication {    public static void main(String[] args) {        SpringApplication.run(ProviderApplication.class, args);    }}
           

步驟總結:

1.搭建pom環境

2.寫好配置檔案(一定要寫上dubbo.scan.base-packages該配置會掃描你寫的服務并注冊到zookeeper)

3.具體服務實作

4.運作springboot啟動類即可

  • 消費者相關代碼及配置

pom主要配置:

com.dubbo.testconsumer0.0.1-SNAPSHOTconsumercom.dubbo.testservice1.0-SNAPSHOTorg.apache.dubbodubbo-spring-boot-starter2.7.7com.101teczkclient0.10
           

application.properties 參數配置:

#避免端口沖突server.port=8083#dubbo configurationdubbo.application.name=dubbo_consumerdubbo.registry.protocol=zookeeperdubbo.registry.address=zookeeper://127.0.0.1:2181
           

遠端調用入口:

package com.dubbo.consumer.controller;import com.alibaba.dubbo.config.annotation.Reference;import com.dubbo.service.TestService;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author test * @time 2019/8/27 15:58 * @description: * 調用dubbo */@RestControllerpublic class TestController {    @Reference(version = "1.0.0")    private TestService testServiceImpl;    @RequestMapping("/insert")    public String insert(){        testServiceImpl.insert();        return "insert 調用成功";    }    @RequestMapping("/delete")    public String delete(){        testServiceImpl.delete();        return "delete 調用成功";    }    @RequestMapping("/update")    public String update(){        testServiceImpl.update();        return "update 調用成功";    }    @RequestMapping("/select")    public String select(){        testServiceImpl.select();        return "select 調用成功";    }}
           

注意:TestController類中的代碼結構使用服務注入時使用dubbo的@Reference注解。

啟動類:

package com.dubbo.consumer;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class ConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(ConsumerApplication.class, args);    }}
           
  • 依次啟動生産者項目,消費者項目(等生産者起來之後再啟動,否則找不到服務)

重新整理dubbo控台,可以看到生産者消費者顯示正常。

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

生産者:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

消費者:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

接口服務:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper
  • 接口調用測試

通路位址 http://localhost:8080/insert 結果如下:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

服務調用日志:

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

踩坑:

java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener

在pom檔案中加入這兩個依賴即可:

org.apache.curator    curator-framework    4.0.1org.apache.curator    curator-recipes    2.8.0
           

至此已經完成了dubbo的正常調用。

dubbo+zookeeper示例代碼_springboot整合dubbo+zookeeper(三)第一步,本地搭建zookeeper注冊中心第二步,本地搭建dubbo監控控台dubbo-admin第三步,将服務注冊到zookeeper

文章僅供學習參考,如有疑問歡迎評論交流!如果你對相關文章感興趣,後續持續輸出相關文章。

歡迎關注+轉發+評論,擷取源碼私信我