集成前的准备

1、  阿里巴巴提供的dubbo集成springboot开源项目;

2、  https://github.com/alibaba

3、  我们将采用该项目提供的jar包进行集成;

<!--添加dubbo集成springboot依赖-->
<dependency>
   <groupId>com.alibaba.spring.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>1.0.0</version>
</dependency>

dubbo开发一般建议采用三个项目:

         开发Dubbo服务接口项目

         开发Dubbo服务提供者项目

         开发Dubbo服务消费者项目

开发Dubbo服务接口项目【普通maven项目即可】

boot集成flink boot集成dubbo_zookeeper

 

 

 

boot集成flink boot集成dubbo_boot集成flink_02

 

 

 

boot集成flink boot集成dubbo_spring_03

 

 

 

按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类

定义接口类

package com.joinlabs.dubbo.service;

import com.joinlabs.dubbo.model.User;

/**
 * Created by Administrator on 2018/10/26/026.
 */
public interface UserService {

    public User findById(int id);

    public String findUserName(int id);

}

定义model类

package com.joinlabs.dubbo.model;

/**

 * Created by Administrator on
2018/10/26/026.

 */public class User {

    private int id;

    private String name;


    public User() {

    }


    public int getId() {

        return id;

    }


    public void setId(int id) {

        this.id = id;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }

}

对接口项目进行打包,利用maven工具进行打包

boot集成flink boot集成dubbo_spring_04

 

 

 

打包成功后会将该jar包以maven的形式保存到maven的本地仓库中,方便服务提供者和消费者项目项目在pom.xml中进行引用

boot集成flink boot集成dubbo_User_05

 

 

 

boot集成flink boot集成dubbo_spring_06

 

 

 

开发Dubbo服务提供者【springboot项目】

boot集成flink boot集成dubbo_zookeeper_07

 

 

 

boot集成flink boot集成dubbo_User_08

 

 

 

boot集成flink boot集成dubbo_boot集成flink_09

 

 

 

boot集成flink boot集成dubbo_zookeeper_10

 

 

 

boot集成flink boot集成dubbo_zookeeper_11

 

 

 

1、 创建一个Springboot项目并配置好相关的依赖;

2、 加入springboot与dubbo集成的起步依赖:

<!--添加dubbo集成springboot依赖-->
<dependency>
   <groupId>com.alibaba.spring.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>1.0.0</version>
</dependency>

3、 在Springboot的核心配置文件application.properties中配置dubbo的信息:

#内置的Tomcat服务器启动后的端口
server.port=8080

#Dubbo配置
spring.dubbo.appname=springboot-dubbo-provider
spring.dubbo.registry=zookeeper://localhost:2181

由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包:

<!-- zookeeper客户端依赖start -->
<dependency>
   <groupId>com.101tec</groupId>
   <artifactId>zkclient</artifactId>
   <version>0.10</version>
   <exclusions>
      <exclusion>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
      </exclusion>
      <exclusion>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-log4j12</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<!-- zookeeper客户端依赖end -->

4、 编写Dubbo的接口实现类,去试下上面的接口项目中的service接口:

想要在pom.xml中引入接口jar包的依赖

<dependency>
   <groupId>com.joinlabs.dubbo</groupId>
   <artifactId>01springboot-dubbo-interface</artifactId>
   <version>1.0-SNAPSHOT</version>
</dependency>

实现类:

package com.joinlabs.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.joinlabs.dubbo.model.User;
import com.joinlabs.dubbo.service.UserService;
import org.springframework.stereotype.Component;

/**
 * Created by Administrator on 2018/10/26/026.
 */
@Service(interfaceClass = UserService.class) //该注解是dubbo的,等价于之前的<dubbo:service interface="" ></dubbo:service>
@Component //该注解是spring的,或者使用@org.springframework.stereotype.Service

public class UserServiceImpl implements UserService {

    @Override
    public User findById(int id) {
        User user = new User();//模拟数据,也可以集成mybatis到数据库查询数据
        user.setId(id);
        user.setName("name"+id);
        return user;
    }

    @Override
    public String findUserName(int id) {
        return "name"+id;
    }
}

5、编写一个入口main程序启动Dubbo服务提供者:

package com.joinlabs.dubbo;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration //开启dubbo配置支持
public class Application {

   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
}

安装和启动zookeeper

下载安装包

解压缩到c盘根目录

修改配置文件名称zookeeper-3.4.10\conf\zoo_sample.cfg为zoo.cfg

编辑该配置文件内容

boot集成flink boot集成dubbo_User_12

 

 

 为

boot集成flink boot集成dubbo_User_13

进入到zookeeper-3.4.10\bin目录,并且启动zkServer.cmd,不要关闭控制台窗口

boot集成flink boot集成dubbo_User_14

 

 

 可以通过jsp命令查看进程

boot集成flink boot集成dubbo_spring_15

 

 

 通过自带的客户端去连接

打开一个新的控制台,执行命令zkCli.cmd

boot集成flink boot集成dubbo_zookeeper_16

 

 

 

开发Dubbo服务消费者【springboot项目】

1、创建一个Springboot项目并配置好相关的依赖;

2、加入springboot与dubbo集成的起步依赖:

<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

3、在Springboot的核心配置文件application.properties中配置dubbo的信息:

# WEB服务端口
server.port=9090
# dubbo配置
spring.dubbo.appname=springboot-dubbo-consumer
spring.dubbo.registry=zookeeper://192.168.91.129:2181

由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包:

<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

4、编写一个Controller类,调用远程的Dubbo服务:

@Controller
public class UserController {
    @Reference //使用dubbo的注解引用远程的dubbo服务
    private UserService userService;
    @RequestMapping("/sayHi")
    public @ResponseBody String sayHi () {
        return userService.sayHi("spring boot dubbo......");
    }
}

5、编写一个入口main程序启动Dubbo服务提供者:

@SpringBootApplication
@EnableDubboConfiguration //开启dubbo配置支持
public class SpringbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}