springBoot+dubbo+nacos

本文档展示了如何在Spring Boot应用中集成Dubbo和Nacos,用于服务注册与发现。首先在pom.xml中引入了Dubbo和Nacos的相关依赖,并配置了Dubbo的服务信息,包括应用名、禁用QOS、设置注册中心地址和超时时间。接着,通过@EnableDubbo、@EnableDiscoveryClient等注解启动Dubbo和Nacos支持。然后,定义了服务接口和实体类,生产者实现了接口,消费者通过@Reference注入服务并调用。这是一个简单的Dubbo微服务调用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引入

    <properties>
        <dubbo-spring-boot-starter.version>2.7.5</dubbo-spring-boot-starter.version>
        <dubbo-registry-nacos.version>2.7.5</dubbo-registry-nacos.version>
        <spring-cloud-starter-alibaba-nacos-config.version>2021.1</spring-cloud-starter-alibaba-nacos-config.version>
    </properties>

	<dependencies>
	   <!-- dubbo引入-->
	   <dependency>
	       <groupId>org.apache.dubbo</groupId>
	       <artifactId>dubbo-spring-boot-starter</artifactId>
	       <version>${dubbo-spring-boot-starter.version}</version>
	   </dependency>
	   <dependency>
	       <groupId>org.apache.dubbo</groupId>
	       <artifactId>dubbo-registry-nacos</artifactId>
	       <version>${dubbo-registry-nacos.version}</version>
	   </dependency>

		<!-- nacos引入-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
	   
	</dependencies>

2.配置文件

dubbo:
  # 配置服务信息
  application:
    name: ${spring.application.name}
    # 禁用QOS同一台机器可能会有端口冲突现象
    qos-enable: false
    qos-accept-foreign-ip: false
  # 配置注册中心
  registry:
    address: ${DUBBO_REGISTRY_ADDR:nacos://172.168.1.1:32000}
  # 设置超时时间
  consumer:
    timeout: 4000
  # 设置协议-协议由提供方指定消费方被动接受。如果该应用只做消费者可不要此配置
  protocol:
    name: dubbo
    port: 20880

spring:
  main:
    # 解决Bean重复定义问题
    allow-bean-definition-overriding: true

3.启动类加注解@EnableDubbo

@EnableDubbo
@EnableDiscoveryClient
@EnableAsync(proxyTargetClass = true)
@EnableFeignClients
@SpringBootApplication
public class ProjectApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProjectApplication.class, args);
    }
}

4.编写接口和实体类供生产者和消费者使用

public interface IProviderService {
    /**
     * 获取地图列表
     *
     * @return
     */
    List<ProviderTestDTO> queryList();
}
@Getter
@Setter
@Accessors(chain = true)
@ApiModel(description = "dubbo测试调用实体类,必须实现接口Serializable ")
public class ProviderTestDTO implements Serializable {

    @ApiModelProperty(value = "id")
    private Integer id;

    @ApiModelProperty(value = "名字")
    private String name;

    @ApiModelProperty(value = "时间")
    private Date time;
}

5.生产者实现接口

import org.apache.dubbo.config.annotation.Service;

//注意@Service是org.apache.dubbo.config.annotation.Service
@Service
public class ProviderServiceImpl implements IProviderService {
    @Override
    public List<ProviderTestDTO> queryList() {
        final List<ProviderTestDTO> list = new ArrayList<>();
        list.add(new ProviderTestDTO()
                .setTime(new Date())
                .setId(1)
                .setName("名字"));
        return list;
    }
}

6.消费者使用

@Api(value = "TestDubboController", tags = "dubbo调用测试")
@RestController
@RequestMapping("/v1/dubbo")
public class TestDubboController {

    @Reference
    private IProviderService providerService;

    @ApiOperation(value = "测试dubbo调用")
    @GetMapping("/list")
    public APIResponse<List<MapListResponseBean>> list() {
        final List<ProviderTestDTO> providerTestDTOS = providerService.queryList();
        return APIResponseUtils.success(providerTestDTOS);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值