进阶SpringBoot之服务注册

embedded/2024/10/18 14:25:17/

新建一个空项目

SpringBoot 创建 Web 项目 provider-server(提供者、服务端)

service 包下创建 TicketService 接口,写个方法

java">package com.demo.service;public interface TicketService {public String getTicket();
}

service 包下创建 TicketServiceImpl 类,实现 TicketService 接口,重写方法

java">package com.demo.service;import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;@DubboService
@Component
public class TicketServiceImpl implements TicketService{@Overridepublic String getTicket() {return "Java";}
}

Maven 仓库

pom.xml 文件导入包,dubbo-spring-boot-starter、zkclient、zookeeper(排除 slf4j-log4j12)

        <!-- 导入依赖:Dubbo + Zookeeper --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.3.0</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.11</version></dependency><!-- 引入Zookeeper --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.3.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.3.0</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.14</version><!-- 排除slf4j-log4j12 --><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency>

application.properties:

server.port=8001#服务应用名字
spring.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册
dubbo.scan.base-packages=com.demo.service

开启 Zookeeper 和 Dubbo-admin 服务

SpringBoot 创建 Web 项目 consumer-server(消费者、客户端)

同理,pom.xml 文件导入相同依赖

application.properties:

server.port=8002#消费者名字
spring.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

两个项目端口号不一致,就需要使用 HTTP 或者 RPC(远程过程调用)

把 TicketService 接口复制到 service 包下,保持和服务端相同的接口名(包名路径要相同)

service 包下创建 UserService 类,从注册中心拿到服务

java">package com.demo.service;import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;@Service //放到容器中
public class UserService {//去注册中心拿到服务@Reference //引用,Pom坐标,可以定义路径相同的接口名TicketService ticketService;public void buyTicket(){String ticket = ticketService.getTicket();System.out.println("注册中心拿到"+ticket);}
}

测试类:

java">package com.demo;import com.demo.consumerserver.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class ConsumerServerApplicationTests {@AutowiredUserService userService;@Testvoid contextLoads() {userService.buyTicket();}}

步骤总结:

前提条件:Zookeeper 服务已开启

1.提供者提供服务

1)导入依赖

2)配置注册中心的地址、服务发现名和要扫描的包

3)在想要被注册的服务上面增加一个注解 @DubboService

2.消费者如何消费

1)导入依赖

2)配置注册中心的地址、配置自己服务名

3)从远程注入服务 @Reference


http://www.ppmy.cn/embedded/120516.html

相关文章

RabbitMQ简介

RabbitMQ简介 1、RabbitMQ简介1.1、简介1.2、相关网址1.3、消息中间件&#xff08;MQMessage Queue&#xff09;1.4、常用的消息中间件 2、MQ&#xff08;Message Queue&#xff09;的应用场景2.1、异步处理2.2、系统解耦2.3、流量削峰2.4、日志处理 1、RabbitMQ简介 1.1、简介…

卷积神经网络(CNN)的计算量和参数怎么准确估计?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 1. 卷积层&#xff08;Convolutional Layer&#xff09; a) 计算量估计&#xff1a; 卷积层的 FLOPs 2 * H_out * W_out * C_in * C_out * K_h * K_w 详细解释&#xff1a; H_out, W_out&#xff…

【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;K值选择&#xff08;二&#xff09;距离度量1、欧式距离2、曼哈顿距离3、闵可夫斯基距离 &#xff08;三&#xff09;决策规则1、分类决策规则2、回归决策规则 三、算法优缺点优点缺点 四、KNN分类任务实现对比&am…

构建5G-TSN测试平台:架构与挑战

论文标题&#xff1a;Building a 5G-TSN Testbed: Architecture and Challenges 作者信息&#xff1a; Anna Agust-Torra, Marc Ferr-Mancebo, David Rincn-Rivera, Cristina Cervell Pastor, Sebasti Sallent-Ribes&#xff0c;来自西班牙巴塞罗那的加泰罗尼亚理工大学&…

蓝桥杯【物联网】零基础到国奖之路:十二. TIM

蓝桥杯【物联网】零基础到国奖之路:十二. TIM 第一节 理论知识第二节 cubemx配置 第一节 理论知识 STM32L071xx器件包括4个通用定时器、1个低功耗定时器&#xff08;LPTIM&#xff09;、2个基本定时器、2个看门狗定时器和SysTick定时器。 通用定时器&#xff08;TIM2、TIM3、…

面试知识点总结篇四

一、计算机网络 概念&#xff1a;互连的、自治的计算机系统的集合组成&#xff1a;硬件、软件、协议。功能组成&#xff1a;通信子网&#xff08;物理层、数据链路层、网络层&#xff09;、资源子网&#xff08;会话层、表示层、应用层&#xff09;分别有广域网、城域网、局域…

【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。

【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…

使用API有效率地管理Dynadot域名,设置域名服务器(NS)

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…