前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot+dubbo+nacos非常详细的整合过程

springboot+dubbo+nacos非常详细的整合过程

作者头像
java后端指南
发布2021-06-22 18:42:29
6.4K0
发布2021-06-22 18:42:29
举报
文章被收录于专栏:java后端java后端

Part1文章首推

Part2今日主题:springboot+dubbo+nacos非常详细的整合过程

1简介

nacos是阿里巴巴的一个服务注册中心,相比于zookeeper来说,他的优势非常大,nacos几乎可以成为所有的微服务注册中心,今天来讲一下如何搭建一个demo的,我这个是基于dubbo搭建的。

2环境

  • springboot

3实现过程

1.创建一个一个maven项目

2.删掉这个maven工程的src目录,在这个工程的pom中加入:

代码语言:javascript
复制
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>8</maven.compiler.source>
      <maven.compiler.target>8</maven.compiler.target>
      <netty.version>4.1.56.Final</netty.version>
      <spring-boot.version>2.3.5.RELEASE</spring-boot.version>
      <dubbo.version>2.7.8</dubbo.version>
      <nacos-client.version>1.4.0</nacos-client.version>
  </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-bom</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos-client.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3.目录结构

4.创建好对应的模块

common-api:

pom.xml:

代码语言:javascript
复制
<parent>
        <artifactId>springboot_dubbo_nacos_demo</artifactId>
        <groupId>com.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

创建SayService:

代码语言:javascript
复制
public interface SayService {
    /**
     * 根据名字say hello
     * @param name 名字
     * @return name + hello
     */
    String sayHelloByName(String name);
}

dubbo-provider:

pom.xml:

代码语言:javascript
复制
<parent>
        <groupId>com.example</groupId>
        <artifactId>springboot_dubbo_nacos_demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>dubbo-provide</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dubbo-provide</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

SayServiceImpl.java:

代码语言:javascript
复制
/**
 * @DubboService是新版Dubbo的注解,如果是旧版比如2.7.3,使用的是org.apache.dubbo.config.annotation.Service这个注解
 */
@DubboService
public class SayServiceImpl implements SayService {
    @Override
    public String sayHelloByName(String name) {
        return name+",hello!";
    }
}

启动类上加上@EnableDubbo注解

application.yml:

代码语言:javascript
复制
server:
  port: 14511
spring:
  application:
    name: provider-service
  main:
    allow-bean-definition-overriding: true
dubbo:
  application:
    name: provider-service
  registry:
    address: nacos://127.0.0.1:8848
    username: nacos
    password: nacos
  scan:
    base-packages: com.example.service.impl
  protocol:
    name: dubbo
    port: 15511

dubbo-consumer

pom.xml:

代码语言:javascript
复制
    <parent>
        <groupId>com.example</groupId>
        <artifactId>springboot_dubbo_nacos_demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>service-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-consumer</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

application.yml:

代码语言:javascript
复制
server:
  port: 14512
spring:
  application:
    name: consumer-service
  main:
    allow-bean-definition-overriding: true
dubbo:
  application:
    name: consumer-service
  registry:
    address: nacos://127.0.0.1:8848
    username: nacos
    password: nacos
  protocol:
    name: dubbo
    port: 15511

SayController.java:

代码语言:javascript
复制
@RestController
@RequestMapping("/demo/say")
public class SayController {

    @DubboReference
    private SayService sayService;

    @GetMapping("/sayHello")
    public ResponseEntity<String> sayHello(@RequestParam("name") String name) {
        return ResponseEntity.ok(sayService.sayHelloByName(name));
    }
}

启动类上也要加上@EnableDubbo

5.记得把nacos打开,然后依次启动provider,consumer模块,访问http://localhost:8848/,账号密码都是nacos

服务列表可以看到两个服务

6.测试接口:

访问成功

参考:https://blog.neoniou.com/posts/spring-boot-nacos-dubbo/#service-consumer


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java后端指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part1文章首推
  • Part2今日主题:springboot+dubbo+nacos非常详细的整合过程
    • 1简介
      • 2环境
        • 3实现过程
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档