前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dubbo: 基于SpringBoot+Dubbo的Provider/Consumer的实践

Dubbo: 基于SpringBoot+Dubbo的Provider/Consumer的实践

作者头像
Freedom123
发布2024-03-29 13:41:57
1490
发布2024-03-29 13:41:57
举报
文章被收录于专栏:DevOpsDevOps

一、Maven集成

1.添加dubbo-spring-boot-starter 到你的Pom文件中。

代码语言:javascript
复制
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

2.如果项目获取jar包失败,则尝试添加一下仓库解决。

代码语言:javascript
复制
<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

二、Interface接口定义

1.首先我们需要提供一个Dubbo RPC API 接口,Provider服务需要实现该接口并且导出,Consumer客户端需要调用该接口。

代码语言:javascript
复制
public interface DemoService {

    String sayHello(String name);

}

三、Provider提供者服务定义

1.服务提供者实现Interface接口,注意此处的@Service为com.alibaba.dubbo.config.annotation.Service

代码语言:javascript
复制
@Service(
        version = "1.0.0",
        application = "${dubbo.application.id}",
        protocol = "${dubbo.protocol.id}",
        registry = "${dubbo.registry.id}"
)
public class DefaultDemoService implements DemoService {

    public String sayHello(String name) {
        return "Hello, " + name + " (from Spring Boot)";
    }

}

2.定义入口Main

代码语言:javascript
复制
@SpringBootApplication
public class DubboProviderDemo {

    public static void main(String[] args) {

        SpringApplication.run(DubboProviderDemo.class,args);

    }

}

3.配置application.properties

代码语言:javascript
复制
# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091

# Base packages to scan Dubbo Components (e.g @Service , @Reference)
dubbo.scan.basePackages  = com.alibaba.boot.dubbo.demo.provider.service

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-provider-demo
dubbo.application.name = dubbo-provider-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345

## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = N/A

四、Consumer消费者定义

1.消费者服务请求DemoServiceBean接口,此处的@Reference为com.alibaba.dubbo.config.annotation.Reference

代码语言:javascript
复制
@RestController
public class DemoConsumerController {

    @Reference(version = "1.0.0",
            application = "${dubbo.application.id}",
            url = "dubbo://localhost:12345")
    private DemoService demoService;

    @RequestMapping("/sayHello")
    public String sayHello(@RequestParam String name) {
        return demoService.sayHello(name);
    }

}

2.定义消费者入口类

代码语言:javascript
复制
@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
public class DubboConsumerDemo {

    public static void main(String[] args) {

        SpringApplication.run(DubboConsumerDemo.class,args);

    }

}

3.配置application.properties

代码语言:javascript
复制
# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081


# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345

小结

1、dubbo和springboot的结合非常简单,引入dubbo的starter即可。 2、application.properties配置清晰简单,各配置都非常完整。 3、本示例中用到的各种工具类可以忽略,我只是为了统一返回需要做的一个定义。

参考:https://gitee.com/march3/dubbo-spring-boot-project https://github.com/alibaba/dubbo-spring-boot-starter

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Maven集成
  • 二、Interface接口定义
  • 三、Provider提供者服务定义
  • 四、Consumer消费者定义
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档