热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

springboot集成dubbo注解版的示例代码

这篇文章主要介绍了springboot集成dubbo注解版的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

工作中用springboot搭建项目,用dubbo做远程调用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。

本文假定你已经有springboot和dubbo的使用经验。

dubbo简介

dubbo是阿里巴巴开源的分布式服务框架,一般使用dubbo的RPC调用。但2016年停止维护,现在使用的2.8.4版本其实是当当维护的dubbox。2017年8月阿里又重启维护dubbo,并从2.5.7版本开始支持注解配置。

准备

此示例使用gradle构建,关于gradle的安装配置,请参考官方文档。

zookeeper作为dubbo服务发现的基础组件,关于zookeeper的安装启动,请参考官方文档。

项目结构如下

springboot-dubbo
├─settings.gradle
├─build.gradle
├─springboot-dubbo-api
│ │─build.gradle
│ └─src
│   └─main
│     └─java
│       └─org
│         └─aaron
│           └─springboot
│             └─dubbo
│               └─api
│                 DemoService.java
├─springboot-dubbo-consumer
│ │─build.gradle
│ └─src
│   └─main
│     ├─java
│     │ └─org
│     │   └─aaron
│     │     └─springboot
│     │       └─dubbo
│     │         └─consumer
│     │           DemoController.java
│     │           DubboConfiguration.java
│     │           DubboConsumerApplication.java
│     │             
│     └─resources
│        application.yml
└─springboot-dubbo-provider
  │─build.gradle
  └─src
    └─main
      ├─java
      │ └─org
      │   └─aaron
      │     └─springboot
      │       └─dubbo
      │         └─provider
      │           DemoServiceImpl.java
      │           DubboConfiguration.java
      │           DubboProviderApplication.java
      │             
      └─resources
        application.yml

引入外部依赖

  compile('com.alibaba:dubbo:2.6.3')
  compile('org.apache.zookeeper:zookeeper:3.4.9')
  compile('org.apache.curator:curator-framework:4.0.0')
  compile('org.springframework.boot:spring-boot-starter-web')

配置

1.生产者dubbo配置

@Configuration
public class DubboConfiguration {

  @Bean
  public RegistryConfig registryConfig() {
    RegistryConfig registryCOnfig= new RegistryConfig();
    registryConfig.setAddress("zookeeper://127.0.0.1:2181");
    registryConfig.setClient("curator");
    return registryConfig;
  }

  @Bean
  public ApplicationConfig applicationConfig() {
    ApplicationConfig applicatiOnConfig= new ApplicationConfig();
    applicationConfig.setName("sprintboot-dubbo-provider");
    return applicationConfig;
  }

  @Bean
  public ProtocolConfig protocolConfig() {
    ProtocolConfig protocolCOnfig= new ProtocolConfig();
    protocolConfig.setPort(12021);
    protocolConfig.setName("dubbo");
    return protocolConfig;
  }
}

2.消费者dubbo配置

@Configuration
public class DubboConfiguration {

  @Bean
  public RegistryConfig registryConfig() {
    RegistryConfig registryCOnfig= new RegistryConfig();
    registryConfig.setAddress("zookeeper://127.0.0.1:2181");
    registryConfig.setClient("curator");
    return registryConfig;
  }

  @Bean
  public ApplicationConfig applicationConfig() {
    ApplicationConfig applicatiOnConfig= new ApplicationConfig();
    applicationConfig.setName("sprintboot-dubbo-consumber");
    return applicationConfig;
  }

  @Bean
  public ConsumerConfig consumerConfig() {
    ConsumerConfig cOnsumerConfig= new ConsumerConfig();
    consumerConfig.setTimeout(3000);
    return consumerConfig;
  }
}

3.定义接口

public interface DemoService {
  String sayHello();
}

4.生产者实现接口

import com.alibaba.dubbo.config.annotation.Service;

@Component
@Service(interfaceClass = DemoService.class, version = "1.0")
public class DemoServiceImpl implements DemoService {

  @Override
  public String sayHello() {
    return "Hello Springboot Dubbo";
  }
}

5.消费者调用接口

import com.alibaba.dubbo.config.annotation.Reference;

@RestController
public class DemoController {

  @Reference(interfaceClass = DemoService.class, version = "1.0")
  private DemoService demoService;

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

启动

  1. 本地启动zookeeper
  2. 依次启动springboot-dubbo-provider,springboot-dubbo-consumer
  3. 浏览器访问 localhost:8080/hello
  4. 看到返回'Hello Springboot Dubbo' 即表示调用成功

其他

示例源码(Github)

Dubbo注解配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • solrCloud分布式集群安装配置
    solrCloud分布式集群安装配置1.前提安装Zookeeper集群2.安装部署多个solr节点10.41.2.82 ... [详细]
  • 1整合dubbo1.1e3-manager-Service1.1.1pom.xml排除jar在e3-manager-Service工程中添加dubbo依赖的jar包。 ... [详细]
  • 本文详细介绍了 Apache ZooKeeper 的 FileTxnLog 类中的 setPreallocSize 方法,并提供了多个实际应用中的代码示例。通过这些示例,读者可以更好地理解如何在不同场景下合理设置日志文件的预分配大小。 ... [详细]
  • Spring Cloud Config: 高效统一的配置管理解决方案
    Spring Cloud Config 是一个用于集中管理和分发应用程序配置的工具,支持多环境下的配置管理(如开发、测试和生产环境),并且能够根据需求动态调整配置参数(例如,在大型促销活动期间增加数据库的最大连接数)。 ... [详细]
  • 本文详细记录了一次 HBase RegionServer 异常宕机的情况,包括具体的错误信息和可能的原因分析。通过此案例,探讨了如何有效诊断并解决 HBase 中常见的 RegionServer 挂起问题。 ... [详细]
  • 本文探讨了Thrift作为一款支持多语言的服务开发框架,其在体积、功能、扩展性以及多协议支持等方面的显著优势。特别地,Thrift作为一种RPC(远程过程调用协议)框架,非常适合用于构建可扩展且低耦合的分布式服务系统。文章通过多种编程语言对Thrift服务进行了性能测试,并提供了详细的测试结果。 ... [详细]
  • 解决Linux Ubuntu下Ping IP正常但无法Ping域名的问题
    本文介绍了在Linux Ubuntu系统中遇到的一种常见问题——能够Ping通IP地址,但无法Ping通域名,并提供了有效的解决方案。 ... [详细]
  • 本文详细分析了一个生产系统中遇到的 Apache Axis2 403 Forbidden 错误,并提供了具体的排查步骤和解决方案。 ... [详细]
  • 本文探讨了缓存系统中的两个关键问题——缓存穿透与缓存失效时的雪崩效应,以及这些问题的解决方案。此外,文章还介绍了数据处理、数据库拆分策略、缓存优化、拆分策略、应用架构演进及通信协议的选择等内容。 ... [详细]
  • 本文详细介绍了如何利用go-zero框架从需求分析到最终部署至Kubernetes的全过程,特别聚焦于微服务架构中的网关设计与实现。项目采用了go-zero及其生态组件,涵盖了从API设计到RPC调用,再到生产环境下的监控与维护等多方面内容。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • ZooKeeper 是一个高性能的分布式数据管理和协调框架,通过实现 Paxos 算法确保了分布式环境中的数据强一致性。本文深入探讨了 ZooKeeper 的数据模型及其在复杂分布式系统中的高级应用场景,包括配置管理、命名服务和分布式锁等关键功能。通过实际案例分析,展示了如何利用 ZooKeeper 提高系统的可靠性和可扩展性。 ... [详细]
author-avatar
手机用户2502937497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有