dubbo 2.6.2 + zookeeper 3.4.13 + SpringBoot 2.0.5 搭建

代码地址 :https://github.com/xingxingtx/SpringBoot.git

gitclone:[email protected]:xingxingtx/SpringBoot.git

代码大致结构如下图:

 创建工程名为:

  • springboot-dubbo-provide  工程用于提供服务。
  • springboot-dubbo-api  工程主要是放一些service接口,用于提供给消费者使用 。
  • springboot-dubbo-consume 工程为消费者。

dubbo-admin 安装

参考地址 可以自己百度怎么安装   这里分享一个war包:百度网盘地址 密码:dvq4

工程创建

注意在启动类上添加

@EnableDubboConfig 注解

springboot-dubbo-provide 


pom.xml  与

springboot-dubbo-consume pom.xml也是同样引入

<?xml version="1.0" encoding="UTF-8"?>
<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>Springboot-Dubbo-Provide</groupId>
	<artifactId>springboot-dubbo-provide</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-dubbo-provide</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>SpringBoot</groupId>
		<artifactId>springboot</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<com.alibaba.dubbo.version>2.6.2</com.alibaba.dubbo.version>
		<org.apache.zookeeper.version>3.4.13</org.apache.zookeeper.version>
		<com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version>
		<curator.version>2.8.0</curator.version>
	</properties>

	<dependencies>
		<!-- dubbo -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
			</exclusions>
			<version>${com.alibaba.dubbo.version}</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>${org.apache.zookeeper.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
				<exclusion>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>${com.github.sgroschupf.zkclient.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>${curator.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>${curator.version}</version>
		</dependency>
		<dependency>
			<groupId>Springboot-Dubbo-Api</groupId>
			<artifactId>springboot-dubbo-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>




</project>

dubbo-provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>Springboot-Dubbo-Provide</groupId>
	<artifactId>springboot-dubbo-provide</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-dubbo-provide</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>SpringBoot</groupId>
		<artifactId>springboot</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<com.alibaba.dubbo.version>2.6.2</com.alibaba.dubbo.version>
		<org.apache.zookeeper.version>3.4.13</org.apache.zookeeper.version>
		<com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version>
		<curator.version>2.8.0</curator.version>
	</properties>

	<dependencies>
		<!-- dubbo -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
			</exclusions>
			<version>${com.alibaba.dubbo.version}</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>${org.apache.zookeeper.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
				<exclusion>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>${com.github.sgroschupf.zkclient.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>${curator.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>${curator.version}</version>
		</dependency>
		<dependency>
			<groupId>Springboot-Dubbo-Api</groupId>
			<artifactId>springboot-dubbo-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>




</project>

 ProvideConfig配置

package com.provide.config;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

/**
 * Created by Administrator on 2018/11/7.
 */
@Configuration
@ImportResource({ "classpath:dubbo/*.xml" })
public class ProvideConfig {

}

UserServiceImpl:

Service是dubbo的注解别引错
package com.provide.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.api.model.user.UserModel;
import com.api.service.UserService;
import org.springframework.stereotype.Component;

/**
 * Created by Administrator on 2018/11/7.
 */
@Service(version = "1.0")
@Component
public class UserServiceImpl implements UserService {
    @Override
    public void insertUser(UserModel model) {
        //相关处理
    }
}

springboot-dubbo-consume

pom.xml 与springboot-dubbo-provide一样

dubbo-consume.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="example-consume" />

    <!-- 注册中心暴露服务地址 -->
    <dubbo:registry id="zookeeper" protocol="zookeeper" address="localhost:2181" />

    <!-- 使用注解方式-->
    <dubbo:annotation package="com.consume"/>


    <!--引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。 引用com.api.service.UserService服务-->
    <dubbo:reference id="userService" interface="com.api.service.UserService"
                     check="false" version="1.0" registry="zookeeper" protocol="dubbo" timeout="15000"/>
</beans>

Controller调用:

package com.consume.controller.order;

import com.api.model.user.UserModel;
import com.consume.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Administrator on 2018/11/7.
 */

@RestController
@Api("用户模块")
public class OrderController {
    @Autowired
    OrderService orderService;
    @RequestMapping(value = "/api/user",method = RequestMethod.GET)
    @ApiOperation(value = "用户模块新增", httpMethod = "GET", response = String.class, notes = "用户模块新增,提供用户管理-用户模块新增操作")
    public String insertUser(){
        UserModel model = new UserModel();
        model.setUserName("haha123");
        model.setAddress("怀化");
        orderService.insertUser(model);
        return model.toString();
    }
}

service:

@Reference dubbo注解  属于直连的方式 

package com.consume.service.impl;

import com.alibaba.dubbo.config.annotation.Reference;
import com.api.model.user.UserModel;
import com.api.service.UserService;
import com.consume.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Created by Administrator on 2018/11/9.
 */
@Service
public class OrderServiceImpl implements OrderService{
    @Reference(version = "1.0")
    UserService userService;
    @Override
    public void insertUser(UserModel model) {
        userService.insertUser(model);
    }
}

springboot-dubbo-api  比较简单 代码就不贴出  截图如下,实体类一定要实现Serializable接口


启动:

首先下载对应项目版本的zookeeper  此项目为3.4.13 zookeeper安装请自行百度

这里分享一个3.4.13版本的zookeeper  百度网盘地址 密码:t5yu

1.启动zookeeper服务

2.启动dubbo-admin

3.启动springboot-dubbo-consume

4.启动springboot-dubbo-provide

5.打开地址http://localhost:8080/dubbo-admin-2.5.6/ 如下图表示基础框架搭建已经完成。

提供者界面:

消费者界面:

猜你喜欢

转载自blog.csdn.net/xingxing_tx/article/details/83894092