目录
阿里巴巴提供了 dubbo 集成 springBoot 开源项目, 可以到 GitHub 上 GitHub - apache/dubbo-spring-boot-project: Spring Boot Project for Apache Dubbo查看入门教程
Apache Dubbo Spring Boot 项目可以轻松使用 Dubbo 作为 RPC 框架创建Spring Boot应用程序。更重要的是,它还提供:
Apache Dubbo是一个高性能、轻量级、基于java的RPC框架。 Dubbo 提供了三个关键功能,包括基于接口的远程调用、容错和负载均衡以及自动服务注册和发现。
发布版本
dubbo-spring-boot-starter
您可以通过将以下依赖项添加到 pom.xml 来将最新内容引入您的项目。
- <dependencies>
-
- <dependency>
- <groupId>org.apache.dubbogroupId>
- <artifactId>dubbo-spring-boot-starterartifactId>
- <version>2.7.8version>
- dependency>
- dependencies>
按照 Dubbo 官方开发建议,创建一个接口项目,该项目只定义接口和 model 类。此项目就是一个普通的 maven 项目。
pom.xml
- "1.0" encoding="UTF-8"?>
-
"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">
-
4.0.0 -
-
com.zl -
dubbo-maven-1 -
1.0-SNAPSHOT -
model类
- package com.zl.model;
-
- import java.io.Serializable;
-
- public class Student implements Serializable {
- private static final long serialVersionUID = 7924975682459971235L;
- private Integer id;
- private String name;
- private Integer age;
-
- @Override
- public String toString() {
- return "Student{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
服务接口
- package com.zl.service;
-
- import com.zl.model.Student;
-
-
- public interface StudentService {
- Student queryStudent(Integer id);
- }
是一个SpringBoot项目,所以需要新建一个新工程!
第一步:创建SpringBoot项目,引入核心依赖
pom.xml
核心依赖:公共项目的gav、dubbo依赖、zookeeper依赖。
- "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.0modelVersion>
- <parent>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-parentartifactId>
- <version>2.7.15version>
- <relativePath/>
- parent>
-
- <groupId>com.zlgroupId>
- <artifactId>dubbo-providerartifactId>
- <version>0.0.1-SNAPSHOTversion>
- <name>dubbo-providername>
- <description>dubbo-providerdescription>
-
- <properties>
- <java.version>1.8java.version>
- properties>
-
- <dependencies>
-
- <dependency>
- <groupId>com.zlgroupId>
- <artifactId>dubbo-maven-1artifactId>
- <version>1.0-SNAPSHOTversion>
- dependency>
-
- <dependency>
- <groupId>org.apache.dubbogroupId>
- <artifactId>dubbo-spring-boot-starterartifactId>
- <version>2.7.8version>
- dependency>
-
- <dependency>
- <groupId>org.apache.dubbogroupId>
- <artifactId>dubbo-dependencies-zookeeperartifactId>
- <version>2.7.8version>
- <type>pomtype>
- <exclusions>
-
- <exclusion>
- <artifactId>slf4j-log4j12artifactId>
- <groupId>org.slf4jgroupId>
- exclusion>
- exclusions>
- dependency>
-
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starterartifactId>
- dependency>
-
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- dependency>
- dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- plugin>
- plugins>
- build>
-
- project>
第二步:实现Service公共项目的接口,暴露服务
注:使用@DubboService注解去暴露服务;使用interfaceClass属性指定接口的类,version属性指定版本号,还可以使用timeout指定延迟时间。
- package com.zl.service.impl;
-
- import com.zl.model.Student;
- import com.zl.service.StudentService;
- import org.apache.dubbo.config.annotation.DubboService;
-
- // 暴露服务
- @DubboService(interfaceClass = StudentService.class,version = "1.0"
- ,timeout = 5000)
- public class StudentServiceImpl implements StudentService {
- @Override
- public Student queryStudent(Integer id) {
- Student student = new Student();
- if (1001 == id){
- student.setId(1001);
- student.setName("Jack");
- student.setAge(18);
- }else if(1002 == id){
- student.setId(1002);
- student.setName("Rose");
- student.setAge(22);
- }
-
- return student;
- }
- }
第三步:application.properties进行dubbo属性配置
- #配置服务器名称
- spring.application.name=studentService-provider
- #配置扫描的包
- dubbo.scan.base-packages=com.zl.service
- #配置dubbo协议
- #dubbo.protocol.name=dubbo
- #dubbo.protocol.port=20881
- #注册中心
- dubbo.registry.address=zookeeper://localhost:2181
第四步:启动类
注:适应@EnableDubbo注解启动dubbo,这是一个复合注解,有@EnableDubboConfig和
@DubboComponentScan的功能。
- package com.zl;
-
- import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- @SpringBootApplication
- @EnableDubbo // 启动Dubbo
- public class DubboProviderApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(DubboProviderApplication.class, args);
- }
-
- }
第一步:创建SpringBoot项目,引入核心依赖,和提供者相同;增加一个web依赖,方便测试
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
第二步:controller调用远程服务
注:使用@DubboReference注解调用远程服务,并把创建好的代理对象,注入给studentService。
- package com.zl.controller;
-
- import com.zl.model.Student;
- import com.zl.service.StudentService;
- import org.apache.dubbo.config.annotation.DubboReference;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- @RestController
- public class DubboController {
- // 这里的interfaceClass属性省略也行
- @DubboReference(interfaceClass = StudentService.class,version = "1.0")
- private StudentService studentService;
-
- @GetMapping("/query")
- public String queryStudent(){
- Student student = studentService.queryStudent(1001);
- return "调用远程接口,获取对象:"+student;
- }
-
- }
第三步:application.properties进行dubbo属性配置
- #指定服务名称
- spring.application.name=consumer-application
- #指定注册中心
- dubbo.registry.address=zookeeper://localhost:2181
第四步:启动类
- package com.zl;
-
- import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- @SpringBootApplication
- @EnableDubbo
- public class DubboConsumerApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(DubboConsumerApplication.class, args);
- }
-
- }
解压下载好的Zookeeper压缩包:
C:\dev\Zookeeper\apache-zookeeper-3.5.5-bin\conf\zoo.cfg进行配置
- # The number of milliseconds of each tick
- tickTime=2000
- # The number of ticks that the initial
- # synchronization phase can take
- initLimit=10
- # The number of ticks that can pass between
- # sending a request and getting an acknowledgement
- syncLimit=5
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
-
- #dataDir=/tmp/zookeeper
- #修改存放临时生成的数据的目录
- dataDir=C:/dev/Zookeeper/apache-zookeeper-3.5.5-bin/data
-
- # the port at which the clients will connect
- #端口号
- clientPort=2181
- #需要启动另外一个服务,默认端口是8080,防止冲突修改一下
- admin.serverPort=8888
- # the maximum number of client connections.
- # increase this if you need to handle more clients
- #maxClientCnxns=60
- #
- # Be sure to read the maintenance section of the
- # administrator guide before turning on autopurge.
- #
- # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
- #
- # The number of snapshots to retain in dataDir
- #autopurge.snapRetainCount=3
- # Purge task interval in hours
- # Set to "0" to disable auto purge feature
- #autopurge.purgeInterval=1
执行zkServer.cmd程序,启动Zookeeper
启动提供者和消费者项目的启动类
进行访问
本次送书 1本!
活动时间:截止到 2023-09-29 00:00:00。抽奖方式:利用程序进行抽奖。
参与方式:关注博主(只限粉丝福利哦)、点赞、收藏,评论区随机抽取,最多三条评论!
关键点
1. 借助ChatGPT与Python轻松实现办公自动化。
2. Excel Home多位微软全球MVP专家打造,用大量实例介绍使用Python操作Excel、Word、PPT和日常办公中涉及的各种对象。
3. 方式新颖 详细介绍了如何用 ChatGPT 来补充学习知识点,以及如何快速生成所需的代码,零基础人员学习编程的成本进一步降低。
4. 内容丰富 以Excel数据处理与分析为重点,延展到 Word、PPT、邮件、图片、视频、音频、本地文件管理、网页交互等现代办公所需要处理的各种形式的数据。
5. 案例实用 用大量易借鉴的案例帮助用户学会在各个场景中使用自动化技术。
6. 作者权威 Excel Home团队策划,多位微软全球最有价值专家(MVP)通力打造,确保每个案例都实用,对编程小白友好。
7. 让没有编程经验的普通办公人员也能驾驭 Python,实现多个场景的办公自动化,提升效率!
内容简介
以Excel数据处理与分析为重点,延展到 Word、PPT、邮件、图片、视频、音频、本地文件管理、网页交互等现代办公所需要处理的各种形式的数据。
当当网链接:《Python自动化办公应用大全(ChatGPT版)
京东的链接:京东安全