dubbo+zookeeper示例代码_springboot整合dubbo+zookeeper(三)

现在越来越多的公司开发项目中使用了springboot作为搭建服务的框架,而dubbo是一款国内使用较多的SOA架构开发的中间件,其主要由三个部分组成:生产者,消费者,注册中心。注册中心一般使用的是zookeeper。于是我们从头来捋一捋如何搭建一个springboot+dubbo项目。

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

请参考文章:springboot整合dubbo+zookeeper(一)

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

请参考文章:springboot整合dubbo+zookeeper(二)

第三步,将服务注册到zookeeper

  • 新建一个springboot项目

项目代码结构如下:

41e974291c8e4c959bf0687f85464e2d
  • 服务接口定义
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控台,可以看到生产者消费者显示正常。

f4513a0277864498b987f2b33b0b7d87

生产者:

2308f038b5334ace867927914c1a796e

消费者:

1f43b00362704535bafb4801aa8d54a9

接口服务:

659e96b75e234be2b0c76508d08b6ab0
  • 接口调用测试

访问地址 http://localhost:8080/insert 结果如下:

d6dd47724f9a4432add5ad651a66357d

服务调用日志:

c0a355f4d8ed4163b310fb87f3fc3b7c

踩坑:

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的正常调用。

631d57a517ad4c80b472108b080b4948

文章仅供学习参考,如有疑问欢迎评论交流!如果你对相关文章感兴趣,后续持续输出相关文章。

欢迎关注+转发+评论,获取源码私信我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值