0
点赞
收藏
分享

微信扫一扫

【Dubbo】SpringBoot 整合 Dubbo 示例

M4Y 2022-04-27 阅读 107
java后端

因为 Dubbo 的依赖中引入了 Spring 相关 Jar 包,所以使用 Dubbo 默认是基于 Spring 的,在前面的文章我们介绍了如何 Dubbo 进行远程通信和服务治理,那么,本篇我们就来看看如何使用 SpringBoot 整合。

创建三个单独模块,分别表示 api,provider,consumer。

在这里插入图片描述

1.dubbo-api

/**
*要暴露的服务
*/
public interface ISayHelloService {
    String sayHello();
}

2.dubbo-provider

1)引入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
	
	<!-- 服务接口 -->
    <dependency>
        <groupId>com.xupt.yzh</groupId>
        <artifactId>dubbo-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
	
	<!-- dubbo -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.7.2</version>
    </dependency>
	<!-- dubbo 自动装配相关内容-->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.1</version>
    </dependency>
	
	<!-- 注册中心Zk客户端 -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.0.1</version>
    </dependency>
    
</dependencies>

2)实现服务

// 这个@Service是dubbo的提供的,表示暴露服务Bean
// 也可以在@Service(loadbalance=)进行相关配置
@Service 
public class SayHelloServiceImpl implements ISayHelloService {
    @Override
    public String sayHello() {
        return "Hello Dubbo...";
    }
}

3)配置服务内容

dubbo.scan.base-packages=com.xupt.yzh.dubboprovider
dubbo.application.name=dubbo-springboot
dubbo.registry.address=zookeeper://43.107.136.120:2181

4)启动服务

启动服务后可以在 zookeeper 中看相关服务是否已经注册

在这里插入图片描述

3.dubbo-client

1)引入依赖

这里同 provider,但一般还会引入 web-starter,因为消费端一般会包含 Controller,提供 web 访问

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.xupt.yzh</groupId>
        <artifactId>dubbo-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.7.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>4.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.0.1</version>
    </dependency>
</dependencies>

2)远程调用服务

@RestController
public class DubboController {
	
    // Dubbo提供的注解,标识根据服务名获取相应服务Bean
    // 也可以在@Reference(loadbalance=)进行相关配置
    @Reference 
    ISayHelloService sayHelloService;

    @GetMapping("/sayHello")
    public String sayHello() {
        // 调用服务提供方法
        return sayHelloService.sayHello();
    }
}

3)配置服务内容

与provider相同

dubbo.registry.address=zookeeper://43.107.136.120:2181
dubbo.scan.base-packages=com.xupt.yzh.dubboclient
dubbo.application.name=dubbo-springboot-client

4.启动服务

启动后可以在web端进行访问

在这里插入图片描述

举报

相关推荐

0 条评论