Dobbo --- HelloWorld项目搭建

Dobbo-HelloWorld

  • 1. demo -- spring方式集成
    • 1.1 实现步骤
  • 2. demo -- springboot方式集成
    • 2.1 实现provider
    • 2.2 实现consumer
    • 2.3 项目测试

1. demo – spring方式集成

dubbo官方文档

提供一个可被调用的接口
提供方:实现接口的方法逻辑,启动应用程序,接收消费方的调用
消费方:确认要调用的接口,找到注册中心,调用提供方,获取接口的返回结果

示例文档参考:https://github.com/apache/dubbo

1.1 实现步骤

在这里插入图片描述

图1-2 提前展示项目文件

  1. 启动zookeeper

在这里插入图片描述

图1-1启动zoopeeper

  1. 引入相关依赖
    <properties><dubbo.version>3.2.5</dubbo.version></properties><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><type>pom</type></dependency></dependencies>
  1. 声明接口及其实现类

声明GreetingsService 接口

public interface GreetingsService {String sayHi(String name);
}

GreetingsService 具体实现类

import com.jyl.api.GreetingsService;public class GreetingsServiceImpl implements GreetingsService {public String sayHi(String name) {return "hi, " + name;}
}
  1. 创建提供方和消费方的应用程序

服务端Application


import com.jyl.api.GreetingsService;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;import java.util.concurrent.CountDownLatch;public class Application {// 先获取zookeeper部署的ip地址private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");public static void main(String[] args) throws Exception {// 创建服务配置 服务对应的接口类GreetingsService 设置泛型ServiceConfig<GreetingsService> service = new ServiceConfig<GreetingsService>();// 设置应用程序的名称service.setApplication(new ApplicationConfig("first-dubbo-provider"));// 设置注册中心 指定zookeeper的连接地址service.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));// 设置提供的接口service.setInterface(GreetingsService.class);// 设置提供具体的实现类service.setRef(new GreetingsServiceImpl());// 设置完成 执行导出命令service.export();System.out.println("dubbo service started");// 保证线程一直挂起new CountDownLatch(1).await();}
}

客户端Application


import com.jyl.api.GreetingsService;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;public class Application {// 先获取zookeeper部署的ip地址private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");public static void main(String[] args) {// 创建客户配置 服务对应的接口类GreetingsService 设置泛型ReferenceConfig<GreetingsService> reference = new ReferenceConfig<GreetingsService>();// 设置应用程序的名称reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));// 设置注册中心 指定zookeeper的连接地址reference.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));// 设置提供的接口reference.setInterface(GreetingsService.class);// 获取到远程的 接口调用GreetingsService service = reference.get();String message = service.sayHi("dubbo");System.out.println(message);}
}
  1. 启动服务端Application 和 客户端 Application

在这里插入图片描述

图1-3 运行Server/Client

2. demo – springboot方式集成

示例文档参考地址:https://github.com/apache/dubbo-spring-boot-project/tree/master/dubbo-spring-boot-samples

2.1 实现provider

在这里插入图片描述

图2-1 提前展示provider项目创建的文件

  1. 启动zookeeper
  2. 创建dubbo-demo-provider SpringBoot项目
  3. 引入依赖(dubbo-springboot、 dubbo-zookeeper、要使用的api的依赖)
   <properties><dubbo.version>2.7.7</dubbo.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>com.jyl</groupId><artifactId>dubbo-demo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><type>pom</type><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency></dependencies>
  1. 实现provider, 实现接口逻辑,增加配置参数
// 说明这个类是作为dubbo的服务被调用的
@DubboService(version = "1.0.0")
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello," + name;}
}
  1. application.properties配置文件

server.port=8090
# 配置dubbo涉及的相关参数spring.application.name=dubbo-demo-provider# 配置dubbo服务的扫描路径
dubbo.scan.base-packages=com.jyl.provider.service# 协议名称
dubbo.protocol.name=dubbo
dubbo.protocol.port=23456# dubbo注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

2.2 实现consumer

在这里插入图片描述

图2-2 提前展示consumer项目创建的文件
  1. 创建dubbo-demo-consumer SpringBoot项目

  2. 引入依赖 和 dubbo-demo-provider项目依赖一致

  3. 实现consumer,注意配置类和主程序入口


@SpringBootApplication
public class DubboDemoConsumerApplication {//对于调用端@DubboReference(version = "1.0.0")DemoService demoService;public static void main(String[] args) {SpringApplication.run(DubboDemoConsumerApplication.class,args);}@Beanpublic ApplicationRunner runner(){return args -> System.out.println(demoService.sayHello("dubbo-spring-boot xxx"));}
}
  1. application.properties
# 设置端口 避免端口号占用
server.port=8899spring.application.name=dubbo-demo-consumer# dubbo注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

2.3 项目测试

先启动demo-provider ,后启动 demo-consumer

在这里插入图片描述

图2-4 项目测试结果

寄语【自勉】:想要成功,必须甩掉所有懒惰的借口,起不来、跑不动、戒不掉……成功的路上只需要我可以,一定行!拼搏的滋味最甜美!新的一天,为梦想全力以赴!

希望可以帮助到@你

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

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

相关文章

跨境电商多语种服务指南:如何提供优质的客户体验?

卓越的客户支持是成功企业的核心&#xff0c;客户希望得到全天候的及时响应。根据《哈佛商业评论》的研究报告&#xff0c;快速及时地响应会促使人们在未来支付更多的费用。而在与全球客户打交道时&#xff0c;特别是跨境电商企业&#xff0c;您的沟通必须超越语言障碍。用客户…

Python爬虫 - 网易云音乐下载

爬取网易云音乐实战&#xff0c;仅供学习&#xff0c;不可商用&#xff0c;出现问题&#xff0c;概不负责&#xff01; 分为爬取网易云歌单和排行榜单两部分。 因为网页中&#xff0c;只能显示出歌单的前20首歌曲&#xff0c;所以仅支持下载前20首歌曲&#xff08;非VIP音乐&…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中&#xff0c;chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub &#xff0c;欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

C语言之编译和链接

目录 一、引言 二、编译和链接 2.1 预处理&#xff08;预编译&#xff09; 2.2 编译 2.3 汇编 2.4 链接 一、引言 #include <stdio.h> int main() {printf("hello, world\n");return 0; } 像这样&#xff0c;只由ASCII字符构成的文件被称为文本文件&…

java结合百度ocr实现图片文字提取功能

1.进入百度云控制台&#xff0c;找到文字识别服务&#xff0c;创建一个应用 2.引入ocr需要的maven依赖包 <dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.16.11</version> </depend…

go实现判断20000数据范围内哪些是素数(只能被1和它本身整除的数),采用多协程和管道实现

实现一个并发程序&#xff0c;用于寻找 20000 以内的所有素数。使用了 Goroutines 和 Channels 来分发和处理任务&#xff0c;并通过 WaitGroup&#xff08;实现为 exitChan&#xff09;来同步 Goroutines 的退出。 一.GO代码 package mainimport ("fmt""time…

C++初阶类与对象(三):详解复制构造函数和运算符重载

上次介绍了构造函数和析构函数&#xff1a;C初阶类与对象&#xff08;二&#xff09;&#xff1a;详解构造函数和析构函数 今天就来接着介绍新的内容&#xff1a; 文章目录 1.拷贝构造函数1.1引入和概念1.2特性 2.赋值运算符重载2.1运算符重载2.2放在哪里2.3运算符重载示例2.3.…

深度学习(1)--基础概念

目录 一.计算机视觉(CV) 二.神经网络基础 三.神经网络整体架构 一.计算机视觉(CV) (1).计算机视觉中图像表示为三位数组&#xff0c;其中三维数组中像素的值为0~255&#xff0c;像素的值越低表示该点越暗&#xff0c;像素的值越高表示该点越亮。 (2).图像表示 A*B*C&#xf…

美摄视频SDK的HDR格式编辑方案

在当今的视觉媒体时代&#xff0c;高动态范围&#xff08;HDR&#xff09;技术已成为高质量视频内容的标配。为了满足企业对高效、高质量视频处理的需求&#xff0c;美摄科技推出了业界领先的视频SDK&#xff0c;全面支持多种HDR标准的图像视频进行处理。 一、核心优势 HDR全…

视频智能识别周界入侵检测AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快&#xff0c;易安装、易维护&#xff0c;硬件内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。算法可按需组合、按…

从matlab的fig图像文件中提取数据

这里用的是openfig&#xff08;&#xff09;函数打开的fig文件 →→→【matlab 中 fig 数据提取】 很简洁 →→→【MATLAB提取 .fig 文件中的数据】 这个给出了包含多个曲线的情况 →→→【提取matlab fig文件里的数据和legend】 chatgpt给出的方法 打开fig文件并保存数据 我的…

Vue入门七(Vuex的使用|Vue-router|LocalStorage与SessionStorage和cookie的使用|路由的两种工作模式)

文章目录 一、Vuex1&#xff09;理解vuex2&#xff09;优点3&#xff09;何时使用&#xff1f;4&#xff09;使用步骤① 安装vuex② 创建vuex③ 导入vuex④ 创建仓库Store⑤ 基本使用 5&#xff09;五个模块介绍1.State2.mutations3.actions4.Getter5.Modules 6&#xff09;购物…

QT设置QTableWidget左上角文字(CornerButton)

关于这个左上角 在QTableWidget中&#xff0c;左上角有一个可以点击的空白区域&#xff0c;如图&#xff1a; 默认情况下&#xff0c;点击它会全选所有的单元格。 它即不属于列表头&#xff0c;也不属于行表头&#xff0c;它的名称叫Corner Button 在QTableWidget中&#xf…

Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

目录 1. 为什么要学习 flask&#xff1f; 2. flask 是什么&#xff1f; 3. flask 如何使用&#xff1f; 要安装 Flask&#xff0c;可以按照以下步骤进行&#xff1a; 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm&#xff0c;新建项目 4.1.2. 设置目录&#xff0c;并…

【JavaEE进阶】 依赖注⼊DI详解

文章目录 &#x1f334;什么是依赖注入&#x1f384;依赖注入的三种方法&#x1f6a9;属性注⼊(Field Injection)&#x1f6a9;构造⽅法注⼊&#x1f6a9;Setter注⼊&#x1f6a9;三种注⼊的优缺点 &#x1f333;Autowired存在的问题&#x1f332;解决Autowired存在的问题&…

借势营销怎么做才能有效宣传?媒介盒子揭秘

借势营销之所以受到品牌欢迎&#xff0c;原因就在于通过借势营销能够达到“润物细无声和四两拨千斤的效果&#xff0c;用小投入获得大回报&#xff0c;但有许多企业稍有不慎就会翻车&#xff0c;今天媒介盒子就从多个角度和大家聊聊&#xff1a;借势营销怎么做才能有效宣传。 一…

深入详解使用 RabbitMQ 过程中涉及到的多个细节问题(面试可用)

目录 1、基础类问题 2、cluster 相关问题 3、综合性问题 4、参考资料 C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/125529931C/C基础与进阶&…

如何隐藏服务器真实IP地址,隐藏服务器IP有什么好处

首先我们介绍了隐藏服务器IP的概念及工作模式&#xff0c;接着阐述了其对于DDoS攻击的防护作用。然后介绍了如何利用隐藏服务器IP增加系统性能和稳定性。接着我们讲述了如何隐藏服务器IP防止黑客攻击&#xff0c;最后总结了隐藏服务器IP在保护服务器和用户数据方面发挥的作用。…

chatgpt的实用技巧四temperature 格式

四、temperature 格式 GPT3.5 temperature 的范围为&#xff1a;0-0.7&#xff1b; GPT4.0 temperature 的范围为&#xff1a;0-1&#xff1b; 当 temperature 为 0 时候&#xff0c;结果可稳定。 当 temperature 为 0.7/1 时候&#xff0c;结果发散具备创力。 数值越大&a…

线性表的案例引入 | 多项式的运算

#include <iostream> using namespace std; #define MAXSIZE 100#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2typedef int Status;typedef struct {int *elem;int length; }SqList;// 初始化 Status Init…