最近想学习dubbo,就利用周末写了一个特别简单的demo,不知道有没有用,先记录一下。

1、安装zookeeper并启动(安装看我上一篇博客https://www.cnblogs.com/huangzhang/p/9219319.html)

2、下载dubbo源码,安装dubbo-admin(安装看我之前的博客https://www.cnblogs.com/huangzhang/p/9219296.html)

这些准备工作做好之后开始写demo代码:

这里用的开发工具是Intellij IDEA,所以利用idea的智能生成一个spring boot项目,这里就不细说了。

搭建好spring boot项目之后,pom.xml文件中引入依赖

<!--引入dubbot-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.10</version>
</dependency>
<!--引入zookeeper-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--引入zookeeper客户端-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

这里是生产者

写测试接口:

package com.example.demo01.service;
/**
* @description 声明服务接口
* @date 2018/06/23
* @author huangzhang
*/
public interface DubboServiceProvider {
//声明服务方法
public String sayHello(String name);
}

实现该接口:

package com.example.demo01.service.Impl;

import com.example.demo01.service.DubboServiceProvider;
import org.springframework.stereotype.Component; /**
* @author huangzhang
* @description
* @date Created in 2018/6/23 18:13
*/
@Component("dubboServiceProvider")
public class DubboServiceProviderImpl implements DubboServiceProvider {
@Override
public String sayHello(String name) {
return "------hello " + name + "------";
}
}

在resource目录下面加入一个dubbo.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--配置服务名称-->
<dubbo:application name="dubboproviderhello" />
<!--配置服务注册中心,dubbo不仅仅支持zookeeper-->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!--声明对外暴露的服务-->
<dubbo:service interface="com.example.demo01.service.DubboServiceProvider" ref="dubboServiceProvider" />
<bean id="demoService" class="com.example.demo01.service.Impl.DubboServiceProviderImpl"></bean>
</beans>

启动类加入注解:

package com.example.demo01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource; @SpringBootApplication
@ImportResource("classpath:/dubbo.xml")
public class Demo01Application { public static void main(String[] args) {
SpringApplication.run(Demo01Application.class, args);
}
}

编写controller:

package com.example.demo01.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
public class HelloController {
@RequestMapping("/index")
@ResponseBody
public String index(){
return "hello world";
}
}

这里项目默认端口是8080,zookeeper默认端口也是8080,所以到application.properties中配置端口

server.port: 8082

然后启动项目,Dubbo-admin管理平台中的注册列表中显示有一个生产者以注册,但是没有消费者,如下图

生产者完成了,然后就是消费者

搭建一个spring boot项目,pom.xml、启动类、service接口都跟生产这一样,在application.properties中配置端口8081

这里配置dubbo.xml的时候有点不一样,不用注入bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--配置服务名称-->
<dubbo:application name="dubboproviderhello" />
<!--配置服务注册中心,dubbo不仅仅支持zookeeper-->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!--声明服务引用,与服务声明接口类型一致-->
<dubbo:reference interface="com.example.demo01.service.DubboServiceProvider" id="dubboServiceProvider" />
</beans>

编写controller

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; /**
* @author huangzhang
* @description
* @date Created in 2018/6/23 20:13
*/
@Controller
public class HelloController {
@Resource
private DubboServiceProvider dubboServiceProvider;
@RequestMapping("/index")
@ResponseBody
public String index(){return dubboServiceProvider.sayHello("tom");
}
}

之后Dubbo-admin管理平台就这样了,有了一个消费者

启动消费者,访问消费者提供的index接口,浏览器直接调用就可以了http://localhost:8081/index

这样一个简单的生产者-消费者demo就搭建完成了,这里消费者通过RPC调用了生产者在Dubbo-admin管理平台注册的服务接口。

springboot+Zookeeper+Dubbo入门的更多相关文章

  1. IDEA上创建 Maven SpringBoot + zookeeper +dubbo 实例

    概述 首先声明,本文是学习总结类型的博客内容,如有雷同纯属学习.本位主要结合zookeeper和dubbo做个简单实例.目前来说,一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越 ...

  2. 基于springboot构建dubbo的入门demo

    之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo:众所周知,springb ...

  3. SpringBoot+Dubbo+ZooKeeper+Maven入门实践

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11798626.html 注*** 本实例为仅适合初学者,关于dubbo和springboot以 ...

  4. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  5. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  6. springboot与dubbo整合入门(三种方式)

    Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...

  7. dubbo入门学习(三)-----dubbo整合springboot

    springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇 ...

  8. Springboot整合Dubbo和Zookeeper

    Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...

  9. springboot使用dubbo和zookeeper

    2019-11-17 yls 创建服务接口模块 接口工程只提供接口,不提供实现,在后面的提供者和消费者中使用 在使用接口的模块中只需要写具体实现类,避免了在每个模块中重复编写接口 在接口中引入依赖包 ...

随机推荐

  1. Oracle 写存储过程的一个模板还有一些基本的知识点

    我很少用Oracle,也算新手,不过其实入手没有那么难,下面只是一个基本知识,高手绕道,其实数据库基本是相同的,这里提供都是基本知识点 有一个Oracle溢出的问题,容易让新手怀疑到无所怀疑,其实就是 ...

  2. winform treeview绑定数据 DOM操作

    form1 public void treeView() { // datatable 定义变量接收 传归来的值 DataTable Father = new BuMenDA().ConSql(); ...

  3. MVC上的jsonp扩展,解决跨域访问问题

    总是有人会遇到跨域问题,然后有个jsonp的解决方案,MVC中代码如下: public class JsonpResult : System.Web.Mvc.JsonResult { object d ...

  4. C#判断程序调用外部的exe已结束

    来源: C#如何判断程序调用的exe已结束 方法一:这种方法会阻塞当前进程,直到运行的外部程序退出 System.Diagnostics.Process exep = System.Diagnosti ...

  5. 【SQL】- 基础知识梳理(一) - 数据库

    一.引言 知识分享这个事情在公司会议上被提出过几次,可一直因各种事情耽搁下来,“我不如地狱,谁入地狱”,怀着这样一种心态,写下了 数据库系列知识分享. 本文将一步步通过循序渐进的方式带你去了解数据库. ...

  6. 数据库处理session类

    <?php /* * 使用数据库处理session * php.ini 中 session.save_handler 设为 "user" */ class Dbsession ...

  7. The method identifyUser(Arrays.asList("group001"), String, new HashMap<>()) is undefined for the type AipFace

    在使用百度云的人脸识别sdk时遇到了这个错误,网上百度不到解决的方法,当我浏览百度云的时候发现了这个 于是考虑到版本可能更新,出现了新的函数代替旧的函数,于是去查文档,文档链接如下 https://c ...

  8. HTML中&nbsp; &ensp; &emsp; &thinsp;等6种空白空格

  9. Shell等,不等......

    -eq           //等于 -ne           //不等于 -gt            //大于 (greater ) -lt            //小于  (less) -g ...

  10. xtrabackup使用

    转自:https://www.cnblogs.com/waynechou/p/xtrabackup_backup.html 阅读目录 xtrabackup 选项 xtrabackup 全量备份恢复 x ...