新版本dubbo2.7.9加zookeeper测试demo程序附码云代码地址
2021/4/11 14:27:34
本文主要是介绍新版本dubbo2.7.9加zookeeper测试demo程序附码云代码地址,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 一、代码地址:
- 二、实现过程
- 1、新建父项目dubbo-text
- 2、新建子项目dubbo-api
- 3、新建子项目dubbo-provider
- 4、新建子项目dubbo-consumer
- 三、编码和配置
- 1、编写dubbo-api
- 2、编写dubbo-provider(生产者)
- 3、编写dubbo-consumer(消费者)
- 四、启动
- 1、启动zookeeper
- 2、启动provider
- 3、启动consumer
- 五、测试
一、代码地址:
https://gitee.com/hankeyan555/dubbo-text
二、实现过程
目录结构:
1、新建父项目dubbo-text
添加基本信息:
选择springboot版本
建好后,删除src等用不上的。
父项目pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hky</groupId> <artifactId>dubbo-text</artifactId> <packaging>pom</packaging> <version>1.0.0</version> <modules> <module>dubbo-api</module> <module>dubbo-provider</module> <module>dubbo-consumer</module> </modules> <!--<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> </parent>--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.4</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.4.4</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> <configuration> <!-- 在构建路径中 指定源文件编译的字符编码 --> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
2、新建子项目dubbo-api
然后依旧是选择Spring Initializr类型的新建,然后填写基本信息,依次下一步直到完成就好。
pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>dubbo-text</artifactId> <groupId>com.hky</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <version>1.0.0</version> <artifactId>dubbo-api</artifactId> </project>
3、新建子项目dubbo-provider
与上一步类似,不再复述,pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hky</groupId> <artifactId>dubbo-text</artifactId> <version>1.0.0</version> </parent> <groupId>com.hky</groupId> <artifactId>dubbo-provider</artifactId> <version>1.0.0</version> <name>dubbo-provider</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 引入模块 --> <dependency> <groupId>com.hky</groupId> <artifactId>dubbo-api</artifactId> <version>1.0.0</version> </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>2.7.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes --> <!-- 解决java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory报错 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency> </dependencies> <build> <plugins> <!--在这里修改版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> </plugin> </plugins> </build> </project>
4、新建子项目dubbo-consumer
与上一步类似,不再复述,pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.hky</groupId> <artifactId>dubbo-text</artifactId> <version>1.0.0</version> </parent> <groupId>com.hky</groupId> <artifactId>dubbo-consumer</artifactId> <version>1.0.0</version> <name>dubbo-consumer</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.hky</groupId> <artifactId>dubbo-api</artifactId> <version>1.0.0</version> </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>2.7.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes --> <!-- 解决java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory报错 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> </plugin> </plugins> </build> </project>
三、编码和配置
1、编写dubbo-api
子项目dubbo-api我理解为是承上启下的作用,它只包含接口,不包含实现,也无需配置。由于生产者和消费者都引用dubbo-api的jar包,这样有多个消费者,直接引用dubbo-api的jar即可。
依照目录结构,新建DemoService接口:
package com.hky.dubbo.api.service; public interface DemoService { public String sayHello(String name); }
2、编写dubbo-provider(生产者)
首先application.properties配置基本信息和zookeeper信息,如下:
#设置内嵌Tomcat server.port=8081 #设置上下文根 server.servlet.context-path=/ #配置 dubbo 的服务提供者信息 #服务提供者应用名称(必须写,且不能重复) spring.application.name=dubbo-provider #设置当前工程为服务提供者 spring.dubbo.server=true #设置注册中心 spring.dubbo.registry=zookeeper://localhost:2181 dubbo.registry.address=zookeeper://localhost:2181 dubbo.metadata-report.address=zookeeper://localhost:2181
然后,编写启动类,加上@EnableDubbo注解:
package com.hky.dubbo; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo @SpringBootApplication public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } }
然后,编写DemoServiceImpl是对dubbo-api中DemoService的实现类,并将其注册到zookeeper:
package com.hky.dubbo.service.impl; import com.hky.dubbo.api.service.DemoService; import org.apache.dubbo.config.annotation.DubboService; @DubboService(version = "1.0.0") public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "hello word! "+ name; } }
以前用
@service和@reference注解,新版本这俩注解已经淘汰了,用@DubboService和@DubboReference注解了
再有version要必填,可自定义版本号
3、编写dubbo-consumer(消费者)
配置文件application.properties:(注意端口和应用名称设置不一样的)
#设置内嵌Tomcat server.port=8089 #设置上下文根 server.servlet.context-path=/ #配置 dubbo 的服务提供者信息 #服务提供者应用名称(必须写,且不能重复) spring.application.name=dubbo-consumer #设置注册中心 spring.dubbo.registry=zookeeper://localhost:2181 dubbo.registry.address=zookeeper://localhost:2181 dubbo.metadata-report.address=zookeeper://localhost:2181
启动类,依旧添加@EnableDubbo
package com.hky.dubbo; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo @SpringBootApplication public class DubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(DubboConsumerApplication.class, args); } }
然后,consumer添加对外访问的controller,如下:
package com.hky.dubbo.controller; import com.hky.dubbo.api.service.DemoService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { // 调用暴露的接口 @DubboReference(interfaceClass = DemoService.class,version = "1.0.0",check = false) private DemoService demoService; @GetMapping("/demo") public String getDemo(){ System.out.println("调用了dubbo"); String res = demoService.sayHello("hankeyan"); return res; } }
四、启动
1、启动zookeeper
先下载zookeeper,当前最新版本下载地址:
https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/
注意:要下载apache-zookeeper-3.7.0-bin这个
解压后,如下:
2、启动provider
3、启动consumer
五、测试
访问地址:http://localhost:8089/demo
效果:
这篇关于新版本dubbo2.7.9加zookeeper测试demo程序附码云代码地址的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?