小企业适用的组件化的服务间的调用

2023-12-20 13:10

本文主要是介绍小企业适用的组件化的服务间的调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
服务间调用是微服务体系中必不可少的一部分,在springcloud alibaba的官网中,推荐使用是dubbo,但因为并发量比较小,同时dubbo相对比较复杂,所有楼主在服务间调用选型时,依然选择了openfeign。同时将服务间调用的接口封装为子工程,进行统一的api管理。避免小伙伴们造重复的轮子。

1.新建api子工程

1.搭建子工程

这里新建了一个子工程,文件结构如下。

2.添加pom.xml

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>    <version>2.2.6.RELEASE</version></dependency>

3.实现fallback熔断方法

当服务调用失败,会跳转到该类。后文会与Sentinel一起使用。

@Component
public class UserFallBack implements UserApi {@Overridepublic Result<UserVO> getCurrentUser() {Result<UserVO> result = new Result<>();String error = "调用system获取当前用户信息失败!";result.setCode(506);result.setMessage(error);return result;}@Overridepublic Result<UserVO> getUser(UserVO UserVO) {Result<UserVO> result = new Result<>();String error = "调用system获取输入用户信息失败!";result.setCode(506);result.setMessage(error);return result;}
}

4.feign接口实现

@FeignClient(name = "system", fallback = UserFallBack.class) //其中name为nacos中的服务名
public interface UserApi {/*** 获取当前用户信息* * @return*/@GetMapping("/getCurrentUser")Result<UserVO> getCurrentUser();/*** 通过实体获取用户信息** @return*/@GetMapping("/getUser")Result<UserVO> getUser(@SpringQueryMap UserVO UserVO);
}

这里需要注意,如果在get请求时,同时boby中有值,feign会把get转换成post,所以这种情况需要使用@SpringQueryMap注解。

2.父工程调用

1.修改pom.xml

1.在pom文件中引入子工程 ,详细配置可以参考楼主文章:

    <dependencies><dependency><groupId>com.vanpeng</groupId><artifactId>common-api</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>

2.修改启动类

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients("com.common.api")
public class DatacenterApplication {public static void main(String[] args) {SpringApplication.run(DatacenterApplication.class, args);}}

注意:@EnableFeignClients(“com.common.api”)一定要指定api子工程路径,否则不执行调用。

3.调用

public class DemoController {@AutowiredUserApi userApi;@GetMapping("/demo")public void demo() {Result<RestSysUserVO> xxx = userApi.getCurrentUser();}}

这篇关于小企业适用的组件化的服务间的调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_20143059/article/details/120541152
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/516177

相关文章

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案

《使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案》在SpringBoot应用中,我们经常使用​​@Cacheable​​注解来缓存数据,以提高应用的性能... 目录@Cacheable注解Redis时,Redis宕机或其他原因连不上,继续调用原方法的解决方案1

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序