微服务如何实现各个模块之间相互调用
大家好,我是雄雄,现在是:2022年8月23日21:08:53
前言
在做微服务项目时,我们可能都会遇到这样的情况,那就是A服务需要调用B服务中的某个接口,那有这样的需求时,我们应该怎么处理呢?
实现
使用**@FeignClient** 注解。
其实吧,网上也有好多关于Feign的相关知识和教程,一搜一大堆,有的看眼就会了,有的看眼就废了。。。
我来整理下我的方法吧,尽量的简单明了,不为别的,就为了报答你能在茫茫人海中找到我,让你别浪费时间,抓紧CV到工程中就能跑,到时候想起来了给我点个赞,想不起来了就算了,你好我好,大家都好!
A服务调用B服务的接口:
第一步:
检查下B服务中的接口,能不能直接用(主要看看返回值和参数,如果是普通的Stirng
、int
之类的都能直接用)
如果是实体或者对象集合,我们就使用JSON
传递数据。
如下我写了个接口:
/*** 根据id查询网站的配置** @return*/@ApiOperation(value = "网站设置表-通过id查询", notes = "网站设置表-通过id查询")@GetMapping(value = "/queryConfigById")public String queryConfigById(String id) {JSONObject jsonObject = new JSONObject();WebConfig webConfig = webConfigService.getById(id);if (webConfig == null) {jsonObject.put("code", 200);jsonObject.put("data", null);return jsonObject.toJSONString();}jsonObject.put("code", 200);jsonObject.put("data", webConfig);return jsonObject.toJSONString();}
我这个就是返回了JSON
数据。
第二步
在A服务模块中,新建个接口,添加@FeignClient
注解,注解的值为B服务的模块名,也就是yml
文件中的name
。
spring:application:name: xxx-webmain:allow-bean-definition-overriding: true
接口代码如下:
@FeignClient("xxx-web")
public interface WebClient {/*** 根据编号查询网站的配置信息* @param id* @return*/@GetMapping(value = "/config/webConfig/queryConfigById")String queryConfigById(@RequestParam("id") String id);
}
第三步
在controller
控制器中,自动注入B服务的模块。
@Autowiredprivate WebClient webClient;
这个名字:WebClient
就是我们创建的那个接口的名字。
至此,你就可以在控制器中随便用了,通过webClient
点里面的方法即可,我的业务代码如下:
String huifu = "欢迎关注~";try {//查询网站的配置信息,主要获取的是关注用户回复的内容String webConfig = webClient.queryConfigById("1");if(Strings.isNotBlank(webConfig)){JSONObject object = JSONObject.parseObject(webConfig);Integer code = object.getInteger("code");if(code==200){String data = object.getString("data");JSONObject dataObject = JSONObject.parseObject(data);if(Strings.isNotBlank(dataObject.getString("xcxReply"))){//拿到数据库中的关注之后回复的信息huifu = dataObject.getString("xcxReply");}}}return new TextBuilder().build(huifu, wxMessage, weixinService);} catch (Exception e) {this.logger.error(e.getMessage(), e);}
完事儿了!!!
微服务如何实现各个模块之间相互调用相关推荐
- Spring Cloud之微服务之间相互调用、如何让一个微服务调用另外一个微服务
在使用微服务架构中,可能遇到一些业务情况会涉及服务之间相互调用,下面通过一个简单的demo给大家演示下,演示的是oms服务需要调用ump服务. 代码如下: 1.oms服务提供者 主要是这个注解: @E ...
- (二)SpringCloud,Alibaba微服务架构之——核心模块及相应技术
一.微服务架构中核心模块及其使用技术总览 二.各模块详细说明 1.注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心, ...
- maven学习笔记第一节一-maven install 模块之间相互引用
为什么80%的码农都做不了架构师?>>> 我们再做项目的时候,有很多模块是可以重复使用的,maven提供了很好的解决模块之间相互引用的方法,具体流程如下: 1.建立共用模块 2 ...
- java 多个项目间事物_Java-web-多个独立项目之间相互调用实践
本篇文章只涉及到应用层面,没有涉及到什么底层原理之类的,我目前的实力还没有达到那个级别.如果是大神级别的人看到这篇文章,请跳过. 项目框架也已经是搭建好了的,springboot版本为1.5,数据库操 ...
- 前台为html后台是asp在vs2012中建立什么,Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得...
Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得 < type="text/javascript"> < type="text/java ...
- 《深入理解 Spring Cloud 与微服务构建》第八章 声明式调用 Feign
·# <深入理解 Spring Cloud 与微服务构建>第八章 声明式调用 Feign 文章目录 一.Feign 简介 1.简介 2.工作原理 二.写一个 Feign 客户端 三.Fei ...
- WinCC项目函数之间相互调用
采用WinCC作为上位机框架进行开发工业控制界面,全局脚本中C-Editor进行开发工业控制模型. 我们用C#或者C++时,方法之间调用.类调用等等,比较灵活.其实WinCC和C#或者C++一样. 项 ...
- 讲讲微服务应该如何拆分模块
系列文章目录 01.GoodGuy 的诞生(一个消息推送平台) 02.GoodGuy 试图去揣摩一个好产品会如何进行消息推送管理平台的需求设计 03.GoodGuy 个人开源项目部分技术选型的初步思考 ...
- 微服务架构与Docker容器之间关系
微服务j架构与Docker容器之间关系 因公司业务市场的发展与技术架构等结合因素,希望接下来的产品架构能支撑轻量级.高并发.大数据.智能化.易维护.动态扩展等方向发展,因项目性能问题需要处理,公司架构 ...
最新文章
- 2019微信年度报告!!!
- 编译android系统小结
- HotApp小程序统计,第一个专业的微信第三方小程序统计工具
- 查询程序崩溃日志_PC 崩溃报告途径 amp; 临时解决方法
- 生成对抗网络gan原理_必读!TOP10生成对抗网络GAN论文(附链接)
- matlab频谱分析_罗德与施瓦茨两款新的信号和频谱分析仪 具有多种频率型号
- 【机器学习】机器学习从零到掌握之五 -- 教你使用归一化数值准备数据
- Oddz将于3月18日在Polkastarter进行IDO,此前已完成260万美元战略融资
- ArcGIS API for JavaScript实现分图层显示
- 成功的背后!(给所有IT人)
- UE破解及注册机下载
- 汉诺塔递归算法Java实现
- 软件工程知识点总结——第一、二部分
- 小程序AppId-当前开发者未绑定此AppId,请到小程序管理后台操作后重试
- 华为砍单,小米、荣耀谁会“上位”?
- 【RDMA】IBV_SEND_INLINE和IBV_SEND_SIGNALED的原理|RDMA小消息通信性能优化
- 流量的秘密—Google Analytics网站分析与优化技巧(第2版)
- 微信小程序用户登录信息过期处理
- sql 纵向求和_SQL求和
- 锐化 清晰度 对比度的区别