欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 基于springboot的dubbo调用

基于springboot的dubbo调用

2025/2/23 1:16:00 来源:https://blog.csdn.net/weixin_48917089/article/details/145180609  浏览:    关键词:基于springboot的dubbo调用

基于Springboot的dubb调用

1.zookeeper的使用

  • 下载window版本的zookeeper

    官网下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
    
  • 下载后,解压到非中文目录下,然后,创建data目录

    在这里插入图片描述

  • 将zoo_sample.cfg拷贝一份,并命名zoo.cfg

    在这里插入图片描述

  • 更改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=D:\\JavaDev\\zookeeper-3.6.4\\data  # 存放的数据目录
    # the port at which the clients will connect
    clientPort=2181 # zookeeper客户端连接端口
    
  • 双击进行启动
    在这里插入图片描述

2.创建父工程进行依赖管理

创建一个maven项目进行管理,项目结构、代码如下:

pom.xml

 <groupId>com.demo</groupId><artifactId>dubbo-demo</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dubbo-api</module><module>dubbo-provider</module><module>dubbo-consumer</module></modules><properties><dubbo.version>2.7.3</dubbo.version><boot.version>2.7.2</boot.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${boot.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><!--注意类型必须为pom--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><type>pom</type></dependency></dependencies></dependencyManagement>

在这里插入图片描述

3.创建dubbo-api公共模块

项目结构如下图,主要是创建公共的用户接口和用户实体类:

在这里插入图片描述

用户接口:

package com.demo.service;import com.demo.entity.User;public interface IUserService {public User selectUserById(Integer id);
}

项目的pom文件依赖:

 <dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!--注意类型必须为pom--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><type>pom</type><!--防止依赖冲突,这个必须排除--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

4.dubbo服务注册

创建dubbo-provider模块进行服务注册,使用之前需要引入dubbo-api模块。

在这里插入图片描述

用户类服务实现:

@service的注解位于org.apache.dubbo下,不是spring的

package com.demo.service;import com.demo.entity.User;
import org.apache.dubbo.config.annotation.Service;@Service
public class UserServiceImpl implements IUserService{@Overridepublic User selectUserById(Integer id) {User user = new User();user.setId(id);user.setName("hhh");return user;}
}

在application.yml配置服务注册:

server:port: 8081
dubbo:registry:address: zookeeper://localhost:2181timeout: 6000protocol:name: dubbo #协议名称port: 10888 # 通信端口application:name: providerscan:base-packages: com.demo.service  # 扫描成服务的包名

5.dubbo服务发现

创建dubbo-consumer模块进行服务消费,使用之前需要引入dubbo-api模块。

在这里插入图片描述

消费对方暴露的服务:

@Reference表示从注册中心拉取对方的服务,并实例化

package com.demo;import com.demo.entity.User;
import com.demo.service.IUserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ConsumerApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}@Referenceprivate IUserService userService;@Overridepublic void run(String... args) throws Exception {User user = userService.selectUserById(888);System.out.println(user);}
}

6.测试

启动dubbo-provider程序:

在这里插入图片描述

启动dubbo-consumer程序:

在这里插入图片描述
结果如下:

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词