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



    一、Maven集成

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

    <dependency>
        <groupId>com.alibaba.bootgroupId>
        <artifactId>dubbo-spring-boot-starterartifactId>
        <version>1.0.0-SNAPSHOTversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    <repositories>
        <repository>
            <id>sonatype-nexus-snapshotsid>
            <url>https://oss.sonatype.org/content/repositories/snapshotsurl>
            <releases>
                <enabled>falseenabled>
            releases>
            <snapshots>
                <enabled>trueenabled>
            snapshots>
        repository>
    repositories>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、Interface接口定义

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

    public interface DemoService {
    
        String sayHello(String name);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、Provider提供者服务定义

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

    @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)";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.定义入口Main

    @SpringBootApplication
    public class DubboProviderDemo {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboProviderDemo.class,args);
    
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.配置application.properties

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    四、Consumer消费者定义

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

    @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);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.定义消费者入口类

    @SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
    public class DubboConsumerDemo {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboConsumerDemo.class,args);
    
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.配置application.properties

    # 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    小结

    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

  • 相关阅读:
    【建议收藏】回收站数据恢复如何操作?3个方案帮你恢复删除的文件
    精品springboot的二手车管理系统vue
    使用 Solon Cloud 的 Jaeger 做请求链路跟踪
    13009.pycharm搭建python开发环境
    【python数据分析刷题】-N04.中级函数
    python 字符串类型
    uni-app入门:wxs基本使用
    this指哪去了
    【计算机组成原理之存储系统】超级详细
    服务器在被病毒入侵时快速排出的方法
  • 原文地址:https://blog.csdn.net/zhanggqianglovec/article/details/127688563