首页 > 其他分享 >SpringBoot中集成Dubbo,实现服务注册和发现

SpringBoot中集成Dubbo,实现服务注册和发现

时间:2023-04-06 17:36:11浏览次数:53  
标签:集成 Dubbo SpringBoot dubbo boot import org public String

SpringBoot中集成DubboDubbo 实现服务注册和发现

用于理解和学习Dubbo工作原理、和集成方法

版本说明

  • Spring boot版本
    2.3.9.RELEASE

  • dubbo-spring-boot-starter版本

<dependency>
 <groupId>org.apache.dubbo</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>2.7.15</version>
</dependency>
  • zookeeper版本
    3.8.1
<!--ZooKeeper客户端-->
   <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-framework</artifactId>
      <version>5.2.1</version>
   </dependency>
   <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>5.2.1</version>
   </dependency>
  • Dubbo版本
    2.7.15

Dubbo入门知识

  • 基本架构

image

Dubbo测试项目

生产者工程 dubbo-provider

  • 1.Springboot主类上增加注解 @EnableDubboConfig
import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfig
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}
  • 2.创建OderService接口
package com.stu.dubbo.order.service;

public interface OderService {
    /**
     * 查询订单信息
     * @param orderId 订单Id
     * @return
     */
    String getOrderInfo(String orderId);
}

  • 3.创建OderService实现类,在需要提供出去的服务类上增加 @DubboService(version = "1.0.0")注解
package com.stu.dubbo.order.service.impl;

import com.stu.dubbo.order.service.OderService;
import org.apache.dubbo.config.annotation.DubboService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@DubboService(version = "1.0.0")
public class OderServiceImpl implements OderService {

    private static Logger logger = LoggerFactory.getLogger(OderServiceImpl.class);
    @Override
    public String getOrderInfo(String orderId) {
        logger.info("orderId:{}",orderId);
        return String.format("getOrderInfo: %s", orderId);
    }
}
  • 4.配置文件application.properties说明
server.port=8090
spring.application.name=dubbo-provider-order

#dubbo服务扫描接口路径
dubbo.scan.base-packages=com.stu.dubbo.order.service
## Dubbo Registry
dubbo.registry.address=zookeeper://localhost:2181

#日志配置
logging.level.root=info
logging.level.com.stu=debug

消费者工程 dubbo-consumer

  • 1.Springboot主类上增加注解 @EnableDubboConfig
import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfig
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}
  • 1.Springboot主类上增加注解 @EnableDubboConfig
import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfig
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}
  • 2.引入OderService服务,包名定义需要和dubbo-provider保持一致,实际开发中可以把接口抽出,放到单独的api服务

  • 3.创建测试类HelloController,注意 @DubboReference(version = "1.0.0")注解是必须

package com.stu.dubbo.user.controller;


import com.stu.dubbo.order.service.OderService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/dubbo")
public class HelloController {

    @DubboReference(version = "1.0.0")
    private OderService oderService;

    @GetMapping("/oder")
    public String hello(String orderId) {
        return oderService.getOrderInfo(orderId);
    }

}

启动项目验证接口

  • 启动生产者工程。

  • 启动消费者工程,启动之前生产工程需要正常启动并注册,否则消费者会报错。

  • 服务都启动之后,zookeeper中数据状态如下,可以看到生产者和消费者都注册到zk上了。

image

  • 调用接口测试,结果可以正常访问
    image

其他说明

实验和测试的时候,应该注意 dubbo-spring-boot-starter、zookeeper、Bubbo服务版本,否则项目会无法正常启动

标签:集成,Dubbo,SpringBoot,dubbo,boot,import,org,public,String
From: https://www.cnblogs.com/jishuwu/p/17292820.html

相关文章

  • pyspark 集成jupyter与pyspark on yarn
    标签(空格分隔):Spark的部分一:安装jupyterHadoop集群+spark集群安装忽略yuminstallepel-releaseyuminstallpython36pip3install--upgradepip#升级pip到最新版本pip3installjupyter#安装jupyterjupyternotebook--generate-config#安装后......
  • 痞子衡嵌入式:利用i.MXRT1xxx系列ROM集成的DCD功能可轻松配置指定外设
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是利用i.MXRT1xxx系列ROM集成的DCD功能可轻松配置指定外设。关于i.MXRT1xxx系列芯片BootROM中集成的DCD功能这个话题,痞子衡早就想写了,但是一直没有动笔,毕竟这个话题比较生涩,单独讲会比较枯燥。最近痞......
  • 走进Java接口测试之流行框架SpringBoot(概念篇)
    引言说起SpringBoot不得不先了解一下Spring这个企业,不仅因为SpringBoot来源于Spring大家族,而是SpringBoot的诞生和Sping框架的发展息息相关。Spring历史2002年正是JavaEE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。一个美国的小伙子Ro......
  • springboot阿里云oss工具类
    pom依赖;yml配置:读取配置文件类:上传:完整工具类代码:点击查看代码`importcn.hutool.core.lang.UUID;importcom.aliyun.oss.OSS;importcom.aliyun.oss.OSSClientBuilder;importcom.aliyun.oss.model.*;importcom.luzhizheng.common.config.OSSConfig;impor......
  • SpringBoot中如何编写一个优雅的限流组件?
    很早以前,我曾写过两篇介绍如何在SpringBoot中使用Guava和Redis实现接口限流的文章。具体包括:使用Guava实现单机令牌桶限流使用Redis实现分布式限流现在,一个问题摆在我们面前:如何将这两种限流机制整合到同一个组件中,以便用户随时切换呢?显然,我们需要定义一个通用的限流组件,将......
  • Kubernetes + Spring Cloud 集成链路追踪 SkyWalking
    一、概述1、什么是SkyWalking?分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官网地址:http://skywalking.apache.org/2、SkyWalking特性多种监控手段,语言......
  • 自动化工具之Appium持续集成
    背景    持续集成是老生话谈的事情,用的好不好,看自己公司与使用场景,但做为测试开发一种技能还是有必要掌握,虽然大家不怎么做,话说技多不压身,今天咱们谈一谈咱们把appium+maven+java+testng集成到jenkins中去,并且然他jenkins跑起来,配置邮件键默认大家会配置。前置条件:通过main......
  • 什么是中间件?系统集成商系统集成的重要工具和技术手段
     在未来,随着数字化的深入发展,中间件将会变得越来越重要。越来越多的企业和组织将会使用中间件来实现不同系统之间的集成和协作,从而提高业务效率和创新能力。因此,掌握中间件的相关知识和技能,对于从事系统集成工作的人员来说是非常重要的,可以帮助他们更好地应对未来的挑战和机遇。......
  • 系统集成中的中间件——帮助系统集成商提高业务效率的利器
    ​在未来,随着数字化的深入发展,中间件将会变得越来越重要。越来越多的企业和组织将会使用中间件来实现不同系统之间的集成和协作,从而提高业务效率和创新能力。因此,掌握中间件的相关知识和技能,对于从事系统集成工作的人员来说是非常重要的,可以帮助他们更好地应对未来的挑战和机遇。......
  • Go 语言体系下的微服务框架选型: Dubbo-go
    本文介绍了Go微服务体系发展与选型,过去一年优雅上下线以及对未来的展望。作者简介:牛学蔚(GitHub:@justxuewei):ApacheDubboPMC,对云原生、中间件、容器等领域有浓厚兴趣,活跃在Dubbo和Katacontainers两个开源项目中。一、Go微服务体系发展与选型随着微服务技术的快速发展,其在......