SpringBoot2.0整合dubbo

                        SpringBoot2.0整合dubbo

一、开发环境

电脑系统:Windows10

dubbo注册中心:zookeeper-3.3.6

启动成功

zookeeper可视化工具:ZooInspector

连接本地zookeeper成功

 

springboot版本:2.0

dubbo版本:2.6.2

二、项目目录

三、项目代码

1、shop-dubbo-parent(父级工程导入项目需要所有依赖、工具类)

<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>com.yuyou</groupId>
  <artifactId>shop-dubbo-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
  	<module>shop-dubbo-api</module>
  	<module>shop-dubbo-api-member-impl</module>
  	<module>shop-dubbo-api-order-web</module>
  </modules>
  
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</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>
        <curator-framework.version>4.0.1</curator-framework.version>
        <zookeeper.version>3.4.13</zookeeper.version>
        <dubbo.starter.version>0.2.0</dubbo.starter.version>
   </properties>
    
  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.starter.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${curator-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
  </dependencies>
  
  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2、shop-dubbo-api(公共的dubbo接口声明)

<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>
  <parent>
    <groupId>com.yuyou</groupId>
    <artifactId>shop-dubbo-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>shop-dubbo-api</artifactId>
  <packaging>pom</packaging>
  <modules>
  	<module>shop-dubbo-api-member</module>
  </modules>
</project>

3、shop-dubbo-api-member(member服务声明的dubbo接口)

<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>
  <parent>
    <groupId>com.yuyou</groupId>
    <artifactId>shop-dubbo-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>shop-dubbo-api-member</artifactId>
</project>
package com.yuyou.api.member;

public interface MemberService {
	
	String getMember();
}

4、shop-dubbo-api-member-impl(member服务dubbo接口实现工程)

<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>
  <parent>
    <groupId>com.yuyou</groupId>
    <artifactId>shop-dubbo-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>shop-dubbo-api-member-impl</artifactId>
  
  <dependencies>
        <dependency>
            <groupId>com.yuyou</groupId>
            <artifactId>shop-dubbo-api-member</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
##application.yml配置文件
server:
  port: 8081
dubbo:
  application:
    name: member
  protocol:
    name: dubbo
    port: 20881
  registry:
    address: zookeeper://127.0.0.1:2181
  scan:
    base-packages: com.yuyou.api.member.impl
package com.yuyou.api.member.impl;

import org.springframework.beans.factory.annotation.Value;

import com.alibaba.dubbo.config.annotation.Service;
import com.yuyou.api.member.MemberService;

// 注意,引入的是dubbo的注解
@Service
public class MemberServiceImpl implements MemberService{
	
    // 读取配置文件dubbo端口,本地可以模拟集群现象
	@Value("${dubbo.protocol.port}")
	private String port;

	@Override
	public String getMember() {
		return "order服务调用member服务接口"+port;
	}

}
package com.yuyou.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class StartUp {

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

}

5、shop-dubbo-api-order-web(订单服务需要调用member服务dubbo接口)

<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>
  <parent>
    <groupId>com.yuyou</groupId>
    <artifactId>shop-dubbo-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>shop-dubbo-api-order-web</artifactId>
  
  <dependencies>
        <dependency>
            <groupId>com.yuyou</groupId>
            <artifactId>shop-dubbo-api-member</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
##application.yml
server:
  port: 8082
###dubbo 注册服务名称
dubbo:
  application:
    name: order
 ###dubbo服务地址
  protocol:
    name: dubbo
    port: 20880
  registry:
    address: zookeeper://localhost:2181
  consumer:
    timeout: 5000
package com.yuyou.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.yuyou.api.member.MemberService;

@RestController
public class OrderController {
	
    // 引入dubbo接口
	@Reference
	private MemberService memberService;
	
	@RequestMapping("/orderToMember")
	public String orderToMember(){
		return memberService.getUser();
	}

}
package com.yuyou;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@EnableDubbo
@SpringBootApplication
public class StartUp {

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

}

四、启动项目

shop-dubbo-api-member-impl项目启动两次:

server-port:8080/8081

dubbo-port:28080/28081

shop-dubbo-api-order-web启动一次:

server-port:8082

dubbo-port:28080

五、页面访问:

启动两个provider,有两个dubbo端口,本地dubbo负载均衡分别访问不同项目各一次

六、注意事项

springboot1.0和2.0整合dubbo有很大不同,此教程只适合springboot2.0版本

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值