使用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調用
在這裏插入圖片描述

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