# Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(四) -实现 service2 子模块。

Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(四) -实现 service2 子模块。

1、在 service2 子模块下的 service-2-api 二级子工程中,定义服务接口 创建 ProviderService.java


/***   C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-api\src\main\java\djh\it\microservice\service2\api\ProviderService.java**   2024-4-13 在 service2 子模块下的二级子模块 service-2-api 二级子工程中,定义服务接口*   创建 ProviderService.java 接口类。*/package djh.it.microservice.service2.api;public interface ProviderService {String service();
}

2、在 service2 子模块下的二级子模块 service-2-server 二级子工程的 pom.xml 配置文件中, 引入 service-2-api 二级子模块依赖,以创建 ProviderService.java 接口的 实现类, 并加入其他依赖项。


<?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>service-2</artifactId><groupId>djh.it</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service-2-server</artifactId><dependencies><!-- 引入 service-2-api 二级子模块依赖 --><dependency><groupId>djh.it</groupId><artifactId>service-2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入 nacos 配置管理 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 引入 nacos 服务发现 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入 dubbo 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency></dependencies></project><!-- C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server\pom.xml -->

3、在 service2 子模块下的二级子模块 service-2-server 二级子工程中, 创建 ProviderServiceImpl.java 实现类,实现 Dubbo 服务。


/***   C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server\src\main\java\djh\it\microservice\service2\service\ProviderServiceImpl.java**   2024-4-13 在 service2 子模块下的二级子模块 service-2-server 二级子工程中,*   创建 ProviderServiceImpl.java 实现类,实现 Dubbo 服务。*/package djh.it.microservice.service2.service;import djh.it.microservice.service2.api.ProviderService;@org.apache.dubbo.config.annotation.Service
public class ProviderServiceImpl implements ProviderService {public String service() {return "Provider invoke";}
}

4、在 service2 子模块下的二级子模块 service-2-server 二级子工程中, 创建 配置文件 bootstrap.yaml


## C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server\src\main\resources\bootstrap.ymlserver:# port: 56040  # 启动端口port: ${port:56040}  # 启动端口设置为动态传参,如果未传参数,默认端口为 56040
#  servlet:
#    context-path: /application1spring:application:name: service2  #spring应用名, # 注意 FeignClient 不支持名字带下划线main:allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。cloud:nacos:config:  # 表示配置管理server-addr: 127.0.0.1:8848  # 配置中心地址file-extension: yaml  # 配置文件后缀名。namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960  # dev开发环境(nacos-1.1.3)。group: NACOS_MICROSERVICE_GROUP  # xx业务组。discovery:  # 表示服务发现server-addr: 127.0.0.1:8848  # nacos服务器地址namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960  # dev开发环境(nacos-1.1.3)cluster-name: DEFAULTdubbo:  # dubbo 服务配置scan:# dubbo 服务扫描基准包base-packages: djh.it.microserviceprotocol:# dubbo 协议name: dubbo# dubbo 协议端口port: ${dubbo_port:20891}registry:address: nacos://127.0.0.1:8848application:qos-enable: false # dubbo 运维服务是否开启consumer:check: false  # 启动时就否检查依赖的服务。

5、在 service2 子模块下的二级子模块 service-2-server 二级子工程中, 创建启动类 Service2Bootstrap.java


/***   C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-2\service-2-server\src\main\java\djh\it\microservice\service2\Service2Bootstrap.java**   2024-4-13 在 service2 子模块下的二级子模块 service-2-server 二级子工程中,*   创建启动类 Service2Bootstrap.java*/package djh.it.microservice.service2;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class Service2Bootstrap {public static void main(String[] args) {SpringApplication.run(Service2Bootstrap.class, args);}
}

6、在 service2 子模块下的二级子模块 service-2-server 二级子工程中, 运行 启动类 Service2Bootstrap.java 进行测试。

浏览器地址栏输入:http://127.0.0.1:8848/nacos

依次打开 【dev】–》【服务列表】发现 有了 【service2】服务名,
点击【详情】,可以看到端口是 我们设置的 20891。

在这里插入图片描述
在这里插入图片描述

7、在 service1 子模块下的二级子模块 service-1-server 二级子工程中的 pom.xml 配置文件中, 引入 service2 子模块下的二级子模块 service-2-api 接口模块。


<?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>service-1</artifactId><groupId>djh.it</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service-1-server</artifactId><dependencies><!-- 引入 service-1-api 二级子模块依赖 --><dependency><groupId>djh.it</groupId><artifactId>service-1-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入 service-2-api 二级子模块依赖 --><dependency><groupId>djh.it</groupId><artifactId>service-2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入 nacos 配置管理 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 引入 nacos 服务发现 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入 dubbo 依赖项 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency></dependencies></project><!-- C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-server\pom.xml -->

8、在 service1 子模块下的二级子模块 service-1-server 二级子工程的, ConsumerServiceImpl.java 类中,注入 service。


/***   C:\java-test\idea2019\nacos_discovery\nacos-micro-service\service-1\service-1-server\src\main\java\djh\it\microservice\service1\service\ConsumerServiceImpl.java**   2024-4-12  在 service1 子模块下的二级子模块 service-1-server 二级子工程中,*   创建 ConsumerServiceImpl.java 类,实现 Dubbo 服务。*/package djh.it.microservice.service1.service;import djh.it.microservice.service1.api.ConsumerService;
import djh.it.microservice.service2.api.ProviderService;@org.apache.dubbo.config.annotation.Service  //此注解标记此类的方法暴露为 dubbo 接口
public class ConsumerServiceImpl implements ConsumerService {//注入service@org.apache.dubbo.config.annotation.ReferenceProviderService providerService;// dubbo 服务 接口实现内容public String service() {//远程调用String service = providerService.service();return "Consumer invoke | " + service;}
}

9、重启 ApplicationBootstrap.java, Service1Bootstrap.java, Service2Bootstrap.java 三个启动类。进行测试。

再次 在浏览器地址栏输入:http://localhost:56020/application1/service
输出结果变为:test | Consumer invoke | Provider invoke

在这里插入图片描述
在这里插入图片描述

上一节关联代码点击如下:
Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(三) -实现 application1 子模块 调用 service1 子模块的 service-1-api

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

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

相关文章

【Java开发指南 | 第三篇】Java 空行、强制类型转换及基本数据类型

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 Java 空行强制类型转换Java 基本数据类型内置数据类型引用类型 Java 空行 空白行或者有注释的行&#xff0c;Java 编译器都会忽略掉。 强制类型转换 当需要将一个数据类型转换为另一个数据类型时&#xff0c…

全新升级数智化招标采购平台V7.0亮点,助推管理提升

数智化招标采购平台V7.0是郑州信源凭借18年以来在招采领域累积的深厚行业经验和业务洞察&#xff0c;迭代升级的全新产品&#xff0c;平台融合云原生、微服务、大数据、人工智能、物联网等先进技术&#xff0c;构建业务中台、数据中台、AI中台三大核心基座&#xff0c;以采购为…

rabbitMQ如何保证消息有序性

单队列&#xff08;Single Queue&#xff09;与单消费者&#xff08;Single Consumer&#xff09;&#xff1a; 如果只有一个生产者向单一队列发送消息&#xff0c;并且这个队列只连接了一个消费者&#xff0c;则RabbitMQ默认情况下就能够保证消息的有序性。因为RabbitMQ会按照…

Cat6 屏蔽与非屏蔽:决定最佳选择

Cat6 电缆通常用于现代网络中的高速以太网数据传输。它们有两种类型&#xff1a;屏蔽 &#xff08;STP&#xff09; 和非屏蔽 &#xff08;UTP&#xff09;。这两种电缆之间的主要区别在于它们对电磁干扰 &#xff08;EMI&#xff09; 和串扰的抵抗力。 屏蔽 Cat6 电缆具有额外…

python代码打包exe文件

创建和激活虚拟环境 创建虚拟环境 首先让我们创建一个虚拟环境。你可以使用 venv 模块来创建一个虚拟环境。以下是创建虚拟环境的步骤&#xff1a; 打开终端&#xff08;或命令提示符&#xff09;&#xff1a;进入你想要创建虚拟环境的目录。 运行以下命令来创建虚拟环境&a…

谷歌pixel6/7pro等手机WiFi不能上网,显示网络连接受限

近期在项目中遇到一个机型出现的问题,先对项目代码进行排查,发现别的设备都能正常运行,就开始来排查机型的问题,特意写出来方便后续查看,也方便其它开发者来自查。 设备机型:Pixel 6a 设备安卓版本:13 该方法无需root,只需要电脑设备安装adb(即Android Debug Bridge…

protobuf 编码原理

简介 Protocol Buffers&#xff08;protobuf&#xff09;&#xff0c;它是 Google 开发的一种数据序列化协议&#xff08;与 XML、JSON 类似&#xff09;。 优点&#xff1a; 效率高&#xff1a;Protobuf 以二进制格式存储数据&#xff0c;比如 XML 和 JSON 等文本格式更紧凑…

Swift中的条件语句

在Swift中&#xff0c;条件语句用于根据条件的真假来执行不同的代码块。Swift提供了以下几种条件语句&#xff1a; if语句&#xff1a; if语句根据一个条件来执行代码块。如果条件为真&#xff0c;执行if代码块中的内容&#xff1b;如果条件为假&#xff0c;则跳过if代码块。 语…

同一个类中,对于@Transactional注解的方法调用,事务传播行为不会生效

Service public class MyService { Transactional public void methodA() { // some database operations methodB(); } Transactional(propagation Propagation.REQUIRES_NEW) public void methodB() { // some other database operations } }这里&#xff0c;即使…

基于机器学习的安全检测 网络入侵检测概述

1.概述 入侵检测是网络安全中的经典问题,入侵是指攻击者违反系统安全策略,试图破坏计 算资源的完整性、机密性或可用性的任何行为。由定义可见,入侵并非一种特定的入侵行 为,而是一类入侵行为的统称。常见的网络攻击方式包括拒绝服务攻击、伪装身份入侵等。 入侵检测系统(Intru…

C++这个编程语言以后会消失吗,就像以前70后学的编程语言?

随着AI自举编程的到来&#xff0c;绝大多数人类编程语言都会消失&#xff0c;只有 Scratch 这类启智语言作为儿童玩具保留下来。目前看来这一天不远了。 AI自举编程首先无需遵循这种可读文本变为二进制操作码的套路&#xff0c;它本身就是二进制的。而后&#xff0c;一旦智能制…

全局视角观看Python备忘录-英文版

全局视角观看Python备忘录-英文版

如何使用spring-AI?

Spring AI 简介 1、概览 Spring 通过 Spring AI 项目正式启用了 AI&#xff08;人工智能&#xff09;生成提示功能。本文将带你了解如何在 Spring Boot 应用中集成生成式 AI&#xff0c;以及 Spring AI 如何与模型互动。 2、Spring AI 的主要概念 首先回顾一下一些关键…

Qt中的槽(slot)和机器视觉的算子(operator)

Qt中的槽&#xff08;slot&#xff09;和机器视觉中的算子&#xff08;operator&#xff09;都是方法或函数&#xff0c;它们都是在软件中用于执行特定任务的代码块。 在Qt中&#xff0c;槽是一段可以被信号触发的代码&#xff0c;用于响应特定的事件。槽是对象的一部分&#…

十分钟搞定4G转Uart网关:FlexLua低代码助力

在当今的物联网应用中&#xff0c;各种设备之间的连接变得日益重要&#xff0c;而4G转Uart网关设备的出现为设备之间的通信提供了简便的解决方案&#xff0c;推动了物联网技术的不断发展。 4G转Uart网关的通信原理相对简单清晰。它通过4G网络接收数据&#xff0c;然后将数据转换…

Nginx内存池相关源码剖析(六)外部资源释放和内存池销毁

ngx_destroy_pool函数 先执行回调函数释放所有的外部资源&#xff0c;然后free释放所有的大块内存和小块内存。 // 释放外部资源&#xff0c;销毁内存池 void ngx_destroy_pool(ngx_pool_t *pool) {ngx_pool_t *p, *n;ngx_pool_large_t *l;ngx_pool_cleanup_t *…

电脑录制视频软件推荐,帮你找到合适的那一款

随着科技的不断发展&#xff0c;录制视频已成为人们在学习、工作和生活中不可或缺的一部分。电脑录制视频软件作为实现这一目标的重要工具&#xff0c;已经越来越受到用户的青睐。本文将详细介绍三种常用的电脑录制视频软件&#xff0c;帮助用户更好地理解和使用这些工具&#…

大文件上传分片合并java并发开发要点

前面介绍过大文件上传分片合并的nodejs并发示例&#xff0c;主要有mapLimit、Promise、pipeline、fs.createReadStream、fs.createWriteStream(注意&#xff0c;这个设置写入偏移量)等要点&#xff0c;可以实现将文件分片并发写入目标文件的。 java的话&#xff0c;不太熟悉去搜…

高负压采样器

你的未来是你自己创造的&#xff0c;你的路是你自己选择的。走向成功&#xff0c;需要你的勇气和决心&#xff0c;成功不是得到多少&#xff0c;而是付出了多少。当你还在努力时&#xff0c;不要忘记身边的风景——鹤壁永成在你身边 一、高负压瓦斯采取器的用途&#xff1a; 高…

Springboot的配置文件详解:从入门到精通(二)

本系列文章简介&#xff1a; Spring Boot是一种用于构建Java应用程序的开发框架&#xff0c;它提供了一种简化的方式来快速搭建和部署应用程序。在Spring Boot中&#xff0c;配置文件是一种重要的工具&#xff0c;用于配置应用程序的行为和属性。配置文件可以包含各种配置选项&…