Nacos + Dubbo + Springboot 构建【生产者】 + 【消费者】

1. Nacos注册中心启动:

这里在windows里面单机启动一下:

=>nacos\distribution\target\nacos-server-2.0.3-SNAPSHOT\nacos\bin\startup.cmd -m standalone

=>http://127.0.0.1:8848/nacos      nacos/nacos

2. 生产者:

=>pom.xml

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

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.7.8</version>
        </dependency>

=>application.properties

server.port=8080

spring.application.name=nacos-dubbo-provider

dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.application.name=nacos-dubbo.provider

相较于单纯的Nacos + Springboot构建而言,使用dubbo的方式也就是名字有些差别:

        Nacos + Springboot:

  • spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  • spring.cloud.nacos.discovery.service=test-provider

        Nacos + Dubbo + Springboot:

  • dubbo.registry.address=nacos://127.0.0.1:8848
  • dubbo.application.name=nacos-dubbo.provider

=>启动类

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class NacosDubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDubboProviderApplication.class, args);
    }

}

备注:生产者这端由于需要将服务通过Dubbo注册到Nacos,因此需要添加注解【@EnableDubbo】 

备注:相关于@EnableDubbo 这个注解,可以在后面添加括号来标注扫描指定包下的服务,将包内的指定 @DubboService 的服务注册到Nacos中,没有扫描的话当然就将所有指定了@DubboService 统统注册啦。有关于服务包扫描的设置也可以通过在【application.properties】配置文件中配置。

=>Service实现(接口略)

import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

@Service
@DubboService
public class TestServiceImpl implements TestService{

    @Override
    public String getStr(String str) {
        return "Test" + str;
    }
}

备注:这里需要标注将指定的服务注册到Nacos中,使用了注解【@DubboService】

版本升级:这里由于Dubbo依赖的版本升级,因此使用的注解相较于旧版本有些不同,以前是用Dubbo的@Service来将服务标记的,而由于和Spring的@Service冲突,所以那时候只能用@Component了。好在版本升级了,Dubbo的标注使用了@DubboService,Spring的@Service因此又能使用了。说到这里,由于Dubbo由Alibaba托管给Apache了,因此这里pom引入的依赖都是Apache的,Alibaba的虽然也能用,但是却标记不建议使用了。

=>简单测试一下:

=>http://127.0.0.1:8848/nacos      nacos/nacos

3. 消费者:

=>pom.xml

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

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.7.8</version>
        </dependency>

 和生产者相同

=>application.properties

server.port=8081
spring.application.name=nacos-dubbo-consumer

dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.application.name=nacos-dubbo.consumer

和生产者相同 

=>启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NacosDubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDubboConsumerApplication.class, args);
    }

}

没有服务注册到Nacos,因此省略了 @EnableDubbo 

=>Controller(Service间接接口略)

import com.wanghai.service.TestService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @DubboReference
    private TestService testService;

    @RequestMapping("/getStr/{str}")
    public String getStr(@PathVariable String str){
        return testService.getStr(str);
    }
}

备注:消费者通过注解【@DubboReference】来表明服务是在Nacos之中获取的。

版本升级:以前使用的是@Reference,会和既存的@Reference发生冲突,现在变成了@DubboReference了。

=>简单测试一下:

=>http://127.0.0.1:8848/nacos      nacos/nacos

=>http://localhost:8081/getStr/test-nacos

顺利获取Nacos上的服务!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值