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版本

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章