使用yml的方式通过nacos搭建基于springboot的dubbo服务

前期准备

下载并启动好nacos,nacos下载地址
创建两个springboot项目,分别作为provider和consumer

provider

1.maven配置

		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

        <!-- Apache Dubbo  -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-bom</artifactId>
            <version>${dubbo.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- Dubbo Spring Boot Starter -->
        <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</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>
        <!-- Dubbo Registry Nacos -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-spring-context</artifactId>
            <version>RELEASE</version>
        </dependency>

2.删除application文件,新建bootstrap.yml
在这里插入图片描述
bootstrap.yml内容为:

server:
  port: 8880

spring:
  application:
    name: dubbo-service
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      #如果需要nacos作为注册中心,添加如下的配置,并在nacos里创建server1的yaml配置
      config:
        server-addr: ${nacos.service-address}:${nacos.port}
        file-extension: yaml
        prefix: server1
      discovery:
        enabled: true
        register-enabled: true
        server-addr: ${nacos.service-address}:${nacos.port}

nacos:
  service-address: 127.0.0.1
  port: 8848

dubbo:
  scan:
    base-packages: com.per.service.impl
  protocols:
    dubbo:
      name: dubbo
      port: 20890
  consumer:
    check: false
  registry:
    address: nacos://${nacos.service-address}:${nacos.port}
  provider:
    timeout: 5000

3.Application上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4.创建service文件夹,里面定义接口类以及实现类
在这里插入图片描述
接口类

public interface IHelloService {

    String hello();
}

实现类,添加dubbo的service注解

import com.benyun.service.IHelloService;
import org.apache.dubbo.config.annotation.Service;

@Service(protocol = "dubbo")
public class HelloServiceImpl implements IHelloService {

    @Override
    public String hello() {
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "hello";
    }
}

consumer

maven引入的包与provider相同,并且同样把application删除,添加bootstrap.yml

server:
  port: 8881

spring:
  application:
    name: dubbo-client
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      #如果需要引入nacos配置中心的配置,添加config注解的内容
      config:
        server-addr: ${nacos.service-address}:${nacos.port}
        file-extension: yaml
        prefix: server1
      discovery:
        enabled: true
        register-enabled: true
        server-addr: ${nacos.service-address}:${nacos.port}

nacos:
  service-address: 127.0.0.1
  port: 8848

dubbo:
  registry:
    address: nacos://${nacos.service-address}:${nacos.port}
  consumer:
    timeout: 5000

consumer在同样的包下创建同样的接口(通常来说应该把provider的接口进行打包,然后consumer引入该jar包,由于此处是demo,一切从简)

public interface IHelloService {

    String hello();
}

consumer的controller,引入dubbo的注解@Reference

@RestController
@RequestMapping("/test")
public class HelloController {

    @Reference
    private IHelloService helloService;

    @GetMapping("/hello")
    public String hello() {
        return helloService.hello();
    }
}

application添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动demo

首先启动nacos,然后启动provider,查看nacos,看到服务注册到nacos
在这里插入图片描述
启动consumer,查看nacos,看到consumer注册到nacos
在这里插入图片描述
之后调用接口,完成rpc调用
在这里插入图片描述

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