Spring Boot+Dubbo

news/2024/9/22 16:48:10/文章来源:https://www.cnblogs.com/dragon-925/p/18383836

介绍

  • Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。

  • Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。

这里是需要使用到Zookeeper的,可以理解为NacosOpenFeign,需要把不同的服务注册到Zookeeper然后不同服务之间需要相互调用,则需要使用Dubbo

下载安装

  • 安装Zookeeper

    • 下载链接:zookeeper

    • 配置文件:

      解压运行需要在conf目录下创建zoo.cfg文件,其内容为:

        # The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=D:/application/apache-zookeeper-3.8.0-bin/data# the port at which the clients will connectclientPort=10011admin.serverPort=2182
      

      最主要修改的是clientPort,要指定其端口号

    • 启动服务:

      zkCli.cmd

  • 安装dubbo-admin

    • 下载链接:dubbo-admin

    • 修改配置:

      修改\dubbo-admin-server\src\main\resources 指定zookeeper地址

    • 打包dubbo-admin:

      mvn clean package -Dmaven.test.skip=true

    • 运行jar包和前端

    • 账号密码默认为root

代码部分

目录结构

pom内容

  • 内容:

      <properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version><dubbo-version>3.2.0-beta.4</dubbo-version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo-version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo-version}</version><type>pom</type></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><version>${dubbo-version}</version><type>pom</type></dependency></dependencies></dependencyManagement>
    

gmall-interface


public interface DemoService {String sayInfo(String name);
}

dubbo-service-provider

  • pom.xml

    <dependencies><!-- spring boot starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.dragon</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><type>pom</type><exclusions><exclusion><artifactId>slf4j-reload4j</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency></dependencies>
    
  • application.properties

    server.port=8080
    # 注册中心的服务名
    dubbo.application.name=dubbo-springboot-service-provider
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=30881
    dubbo.application.qos-port=32223# 注册中心地址
    #zookeeper.address = 127.0.0.1dubbo.registry.address=zookeeper://${zookeeper.address:127.0.0.1}:10011 #端口为zookeeper设置的端口
    
  • 具体代码

    @DubboService //添加了 @DubboService 注解,通过这个配置可以基于 Spring Boot 去发布 Dubbo 服务
    public class ServiceImpl implements DemoService {@Overridepublic String sayInfo(String name) {return "hello" + name;}
    }
    

注意:启动类需要添加注解:@EnableDubbo

dubbo-service-consumer

  • pom.xml

    <dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper-curator5</artifactId><type>pom</type><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-reload4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.dragon</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
    
  • application.properties

    server.port=8081
    # 在注册中心的服务名
    dubbo.application.name=dubbo-springboot-service-consumer
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=-1
    # 注册中心地址
    dubbo.registry.address=zookeeper://${zookeeper.address:127.0.0.1}:10011
    
  • 具体代码

@Component
public class Task implements ConsumerTask {@DubboReferenceprivate DemoService demoService;@Overridepublic void Task(){String result = demoService.sayInfo("Dubbo!");System.out.println("result =======> " + result);new Thread(() -> {while (true){try{Thread.sleep(1000);System.out.println("Thread Result ======> " + result);}catch (Exception e){e.printStackTrace();Thread.currentThread().interrupt();}}}).start();}
}

注意:启动类需要添加注解:@EnableDubbo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788323.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.外设GPIO、中断

GPIO:通用输入输出端口GPIO特点:1.快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)2.每个IO口都可以做中断3.支持8种工作模式GPIO电气特性:STM32工作电压范围:2 V ≤ VDD ≤ 3.6 VGPIO识别电压范围:  COMS端口:-0.3V ≤ VIL ≤ 1.164V(0);1.833V …

桌面软件/exe程序软件自动化大宝剑--lackey之初识

C/S架构端下的软件在IT发展长河中,渐渐的在大多数从业者已经淡忘。现有的PC端上的软件 也是在极力的前浪推后浪,更新替代一些老派的语言追寻潮流。互联网的软件开发就是IOT,HTTPclient ,鲜有 exe的桌面软件;某也喜欢追新潮学互联网技 术,自动化就接触APP WEB API并使用网…

全网最适合入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用

在 Python 中,枚举(Enumeration, Enum)是一种复合数据类型,用于表示一组相关但不同的常量值。枚举类型允许我们使用人类可读的名称代替代码中的魔法数字或字符串,Python 提供了 enum 模块来实现枚举类型。全网最适合入门的面向对象编程教程:40 Python 常用复合数据类型-…

rn node 版本问题

报错信息:Command PhaseScriptExecution failed with a nonzero exit codeFailed to construct transformer: Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:79:19)at Object.createHash (node:crypto:139:10)at sta…

替代BeyondCompare,四款免费文件代码对比工具分享

Beyond Compare是一套内容比较工具软件。除了可以作文件比较以外,还可以比对文件目录、FTP目录及压缩包案的内容等,但是由于要收费且比较贵,很多公司也在规避工作电脑使用非授权软件的风险,所以分享四款平替Beyond Compare的文件代码对比软件工具。1、WinMerge WinMerge是一…

替代BeyondCompare,免费四款文件代码对比工具分享

Beyond Compare是一套内容比较工具软件。除了可以作文件比较以外,还可以比对文件目录、FTP目录及压缩包案的内容等,但是由于要收费且比较贵,很多公司也在规避工作电脑使用非授权软件的风险,所以分享四款平替Beyond Compare的文件代码对比软件工具。1、WinMerge WinMerge是一…

markdown格式测试

Editor.md hhh换行TEST 1 2 3 a bq d HEAD TEST Smart Test ...--目录 (Table of Contents) [TOCM] 目录Editor.md换行TESTHEAD TESTSmart TestHeading 1Heading 2Heading 3Heading 4Heading 5Heading 6Heading 1 link Heading linkHeading 2 link Heading linkHeading 3 link …

一图速览9种API接口测试

一图速览9种API接口测试,大家都懂了吗?值得收藏!

Serilog文档翻译系列(一) - 入门指南

保持优质文档是 Serilog 的优先事项。如果你发现文档中有缺失或不准确的内容,或者希望通过添加主题或教程来扩展 wiki,请通过问题追踪系统告知我们。 为什么选择Serilog? 与许多其他 .NET 库一样,Serilog 提供了基本的诊断日志记录功能,支持文件、控制台等多种方式。它易于…

数据分析1

数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律数据分析三剑客:Numpy,Pandas,MatplotlibNumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。一、…

CSS调试 (1)

https://www.bilibili.com/video/BV1KM4y1G7EF/内容转自【浏览器调试工具精讲】Chrome Dev Tools精讲,前端必看! 橙色:外边距 蓝色:本体。 绿色:内边距。CTRL+ F 可以搜索 输入某一个string 或者 css,section#someid xpath: //section/p 编辑样式

多线程四-Lock锁及其原理分析

JUC是什么 可能有些不太关注底层代码,会不太理解juc是啥,比如之前的我,只知道是跟并发相关。juc其实就是并发包路径的缩写,java.util.concurrent.而Lock是其中锁的接口,有比如重入锁,读锁,写锁等一些具体实现。 这部分源码理解起来还是有些难度,暂时先理解其大概思路,…