dubbo3-01.helloworld

项目结构

- dubbo-examples- consumer-service- provider-interface- provider-service

pom 文件

dubbo-examples 的 pom.xml

<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.springframework.cloud</groupId>  <artifactId>spring-cloud-dependencies</artifactId>  <version>${spring.cloud.version}</version>  <type>pom</type>  <scope>import</scope>  </dependency>  <dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-alibaba-dependencies</artifactId>  <version>${spring.cloud.alibaba.version}</version>  <type>pom</type>  <scope>import</scope>  </dependency>  <dependency>  <groupId>org.apache.dubbo</groupId>  <artifactId>dubbo-bom</artifactId>  <version>${dubbo.version}</version>  <type>pom</type>  <scope>import</scope>  </dependency>  <dependency>  <groupId>org.example</groupId>  <artifactId>provider-interface</artifactId>  <version>${project.version}</version>  </dependency>  <dependency>  <groupId>com.google.guava</groupId>  <artifactId>guava</artifactId>  <version>${guava.version}</version>  </dependency>  <dependency>  <groupId>org.apache.commons</groupId>  <artifactId>commons-lang3</artifactId>  <version>${commons-lang3.version}</version>  </dependency>  </dependencies>  
</dependencyManagement>

consumer 和 provider 的 pom.xml

两者的 pom.xml 是一样的

<dependencies>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <!-- Registry 注册中心相关 -->  <dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  </dependency>  <!-- Dubbo -->  <dependency>  <groupId>org.apache.dubbo</groupId>  <artifactId>dubbo-spring-boot-starter</artifactId>  </dependency>  <dependency>  <groupId>org.apache.dubbo</groupId>  <artifactId>dubbo-registry-nacos</artifactId>  </dependency>  <dependency>  <groupId>org.example</groupId>  <artifactId>provider-interface</artifactId>  </dependency>  <dependency>  <groupId>com.google.guava</groupId>  <artifactId>guava</artifactId>  </dependency>  <dependency>  <groupId>org.apache.commons</groupId>  <artifactId>commons-lang3</artifactId>  </dependency>  
</dependencies>

代码

provider-interface

provider-service 暴露的 API 接口定义

package org.example.dubbo.service;  public interface ProvideService {  String hello(String name);  
}

provider-service

ProviderApp
@EnableDiscoveryClient  
@EnableDubbo  
@SpringBootApplication  
public class ProviderApp {  public static void main(String[] args) {  SpringApplication.run(ProviderApp.class, args);  }  }
ProviderServiceImpl - dubbo 接口实现
@Component  
@DubboService  // dubbo 接口实现
public class ProviderServiceImpl implements ProvideService {  @Override  public String hello(String name) {  return "hello, " + name + "!";  }  }
配置文件
server:  port: 8080  
spring:  application:  name: dubbo-provider  cloud:  nacos:  server-addr: localhost:8848  discovery:  namespace: local # 命名空间  
dubbo:  application:  id: ${spring.application.name}  name: ${spring.application.name}  protocol:  name: dubbo  port: -1  registry:  # 使用了 nacos 作为注册中心address: nacos://localhost:8848  check: false  scan:  base-packages: org.example.dubbo.service

consumer -service

web
package org.example.dubbo.web;  import org.apache.dubbo.config.annotation.DubboReference;  
import org.example.dubbo.service.ProvideService;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestParam;  
import org.springframework.web.bind.annotation.RestController;  @RestController  
@RequestMapping("/consumer")  
public class ConsumerApi {  @DubboReference(check = false)  private ProvideService providerService;  @GetMapping("/hello")  public String hello(@RequestParam String name) {  return providerService.hello(name);  }  }
配置文件
server:  port: 8081  
spring:  application:  name: dubbo-consumer  cloud:  nacos:  server-addr: localhost:8848  discovery:  namespace: local  
dubbo:  application:  name: ${spring.application.name}  logger: slf4j  registry:  # 使用了 nacos 作为注册中心address: nacos://localhost:8848  port: -1  check: false

启动 和 结果演示

启动顺序: nacos, provider-service, consumer-service

GET http://localhost:8081/consumer/hello?name=dubboHTTP/1.1 200 
Content-Type: text/plain;charset=UTF-8
Content-Length: 13
Date: Mon, 22 Apr 2024 07:48:06 GMT
Keep-Alive: timeout=60
Connection: keep-alivehello, dubbo!Response code: 200; Time: 188ms (188 ms); Content length: 13 bytes (13 B)

总结

总的来说还是很简单的,主要也是参考的[官网](3 - 基于 Spring Boot Starter 开发微服务应用 | Apache Dubbo);

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

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

相关文章

使用大卫的k8s监控面板(k8s+prometheus+grafana)

问题 书接上回&#xff0c;对EKS&#xff08;AWS云k8s&#xff09;启用AMP&#xff08;AWS云Prometheus&#xff09;监控AMG(AWS云 grafana)&#xff0c;上次我们只是配通了EKSAMPAMG的监控路径。这次使用一位大卫老师的grafana的面板&#xff0c;具体地址如下&#xff1a; ht…

Cargo 使用教程

什么是 Cargo&#xff1f; Cargo 是 Rust 的构建系统和包管理器&#xff0c;它提供了创建项目、编译代码、管理依赖和发布包等功能。使用 Cargo&#xff0c;你可以轻松地构建 Rust 程序&#xff0c;而不必深入了解底层的构建细节。 安装 Cargo 在开始之前&#xff0c;确保你…

汽车IVI中控开发入门及进阶(十五):AUTOSAR

前言: 随着汽车四化的进行,汽车电子系统standard标准化和coperation互操作性变得重要, AUTOSAR(AUTomotive Open System Architecture 汽车开放系统架构)框架已成为汽车行业的基础支柱。 AUTOSAR始自2000年,当时认识到标准化是有必要

Redis入门到通关之Redis数据结构-Set篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a; 我是请回答1024&#xff0c;一名Java领域深耕多年…

深入了解 Spring Boot 的加载过程

Spring Boot 的加载过程可以大致分为以下几个阶段&#xff1a; 类加载&#xff1a;首先&#xff0c;Java 虚拟机会加载必要的类&#xff0c;包括 Spring Boot 的核心类和应用程序的相关类。配置解析&#xff1a;Spring Boot 会解析各种配置&#xff0c;如 application.properti…

解读币安Megadrop:如何参加第一期BounceBit活动?

币安推出新的代币发行平台 Megadrop&#xff0c;第一期为 BounceBit。 跟 launchpool 相比&#xff0c; 主要不同是 1&#xff09;锁仓 bnb 有收益的倍数加成 2&#xff09;做任务有收益加成。 我认为核心目的有两个&#xff1a; 1&#xff09;更多收益给 BNB 长期持有者&am…

数仓建模—数据模型

数仓建模—数据模型 前面我们讲了什么是数据仓库,以及数据仓库的发展历史,从这里开始我们讲解数仓建模,在开始之前我们先了解一下什么是数据模型,以及常见的数据模型都有哪些 什么是数据模型 在详细探讨数据模型之前,我们需要明确什么是数据。从本质上讲,数据由收集、…

【运维】docker-compose部署mysql5.7、mysql 8,单节点,双主

一、docker-composemysql 5.7 单机版mysql 5.7 ## docker-compose config ## 检查当前目录docker-compose.yml文件配置是否正确 ## docker-compose up -d ## -d 为后台启动 ## docker-compose up -d --force-rereate ## 强制重新创建容器…

axios 实现上传、下载

一、下载&#xff08;支持批量下载&#xff09; const downloadFile (fileList) > {console.log(fileList, 下载list)fileList.forEach((e) > {const uid uuidv4()const CancelToken axios.CancelTokenlet source CancelToken.source()transmissionStore().setDownlo…

Django中实现JWT(构成原理、base64)

Django中实现JWT(构成原理、base64) 目录 Django中实现JWT(构成原理、base64)简介JWT的构成原理base64的使用手动验证token 简介 JWT (JSON Web Token)通常用于对用户进行身份验证和授权&#xff0c;是一种无状态的认证机制&#xff0c;通过在用户和服务器之间传递加密的令牌来…

jenkins修改全局安全配置之后登录错误

教训&#xff08;流泪&#xff09; 事情是这样的&#xff0c;第一次我需要用单点登录集成jenkins&#xff0c;jenkins可以通过插件的方式支持cas协议&#xff0c;我当时也不很懂&#xff0c;经过我学网上的一顿乱配置&#xff0c;jenkis上不去了&#xff0c;虽然这是公司本地环…

大数据——Zookeeper ZBA协议(四)

Zookeeper ZAB协议 概述 ZAB(Zookeeper Automic Broadcast)是一套专门为Zookeeper设计的用于进行原子广播和崩溃恢复的协议ZAB协议主要包含了两个功能 原子广播&#xff1a;保证数据一致性崩溃恢复&#xff1a;保证集群的高可用 ZAB协议本身是基于2PC算法来进行的设计&#…

记一次 Vscode + Latex 正向/反向搜索忽然失效

遥望大半个月前&#xff0c;完成论文撰写后&#xff0c;这些天虽然多次打开项目&#xff0c;但我真的一个字都没动过&#xff0c;今天想着开始着手修改一下&#xff0c;打开项目发现正向/反向搜索忽然失效了&#xff0c;感觉浑身有蚂蚁在爬&#xff0c;思索再三后找到问题&…

【数学归纳法 反证法】菲蜀定理

裴蜀定理&#xff08;或贝祖定理&#xff0c;Bzout’s identity&#xff09;得名于法国数学家艾蒂安裴蜀&#xff0c;说明了对任何整数a、b和它们的最大公约 数d&#xff0c;关于未知数x和y的线性不定方程&#xff08;称为裴蜀等式&#xff09;&#xff1a;若a,b是整数,且&…

[测试]ChaosBlade: 丢包、延迟、断网、磁盘、cpu占用、内存占用等资源耗尽故障注入利器--编辑中

目录 ChaosBlade是什么? ChaosBlade可以制造哪些工况/故障? 使用文档 git仓库:chaosblade/README_CN.md at master chaosblade-io/chaosblade GitHub ChaosBlade是什么? ChaosBlade: 一个简单易用且功能强大的混沌实验实施工具 ChaosBlade是阿里巴巴开源的一款遵循混…

根据出生日期确定属相 出生日期判断生肖

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 生肖是一个古老的中国文化概念,也称为属相。它是根据农历年份来划分的十二个不同的动物符号,每个动物代表一个特定的年份周期。这十二个生肖分别是:鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗和猪。 每个生肖都…

2024系统架构师---论软件系统架构评估

对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构…

[图解]软件开发中的糊涂用语-04-为什么要追究糊涂用语

0 00:00:00,030 --> 00:00:05,620 今天呢&#xff0c;我们来说一个为什么要追究糊涂用语的问题 1 00:00:06,310 --> 00:00:06,548 2 00:00:06,548 --> 00:00:11,077 大家知道我们前些天都发了好几个视频 3 00:00:11,077 --> 00:00:13,461 追究这个糊涂用语 4 00…

如何搭建一个vue2组件库(king-ui-pro)

文章引用图片无法查看&#xff0c;直接查看原文 感兴趣的可以关注或订阅下这个系列&#xff0c;后续会陆续将相关的组件与公共方法进行分享 目前已经完成了的组件有 多行省略pro版&#xff0c;不是简单的多行省略效果 公共方法&#xff1a; 1、图片预览&#xff0c;知乎的图…

sql知识总结三

3.floor报错注入 &#xff08;1&#xff09;涉及到的函数 as 别名&#xff0c;group by 分组 >select concat_ws(-,(select database()),floor(rand()*2)) as a from users group by a; count()函数 汇总统计数量 >select count(*),concat_ws(-,(select database(0…