大家好,我是雄雄,现在是:2022年8月23日21:08:53

前言

在做微服务项目时,我们可能都会遇到这样的情况,那就是A服务需要调用B服务中的某个接口,那有这样的需求时,我们应该怎么处理呢?

实现

使用**@FeignClient** 注解。
其实吧,网上也有好多关于Feign的相关知识和教程,一搜一大堆,有的看眼就会了,有的看眼就废了。。。

我来整理下我的方法吧,尽量的简单明了,不为别的,就为了报答你能在茫茫人海中找到我,让你别浪费时间,抓紧CV到工程中就能跑,到时候想起来了给我点个赞,想不起来了就算了,你好我好,大家都好!

A服务调用B服务的接口:

第一步:

检查下B服务中的接口,能不能直接用(主要看看返回值和参数,如果是普通的Stirngint之类的都能直接用)
如果是实体或者对象集合,我们就使用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);}

完事儿了!!!

微服务如何实现各个模块之间相互调用相关推荐

  1. Spring Cloud之微服务之间相互调用、如何让一个微服务调用另外一个微服务

    在使用微服务架构中,可能遇到一些业务情况会涉及服务之间相互调用,下面通过一个简单的demo给大家演示下,演示的是oms服务需要调用ump服务. 代码如下: 1.oms服务提供者 主要是这个注解: @E ...

  2. (二)SpringCloud,Alibaba微服务架构之——核心模块及相应技术

    一.微服务架构中核心模块及其使用技术总览 二.各模块详细说明 1.注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心, ...

  3. maven学习笔记第一节一-maven install 模块之间相互引用

    为什么80%的码农都做不了架构师?>>>    我们再做项目的时候,有很多模块是可以重复使用的,maven提供了很好的解决模块之间相互引用的方法,具体流程如下: 1.建立共用模块 2 ...

  4. java 多个项目间事物_Java-web-多个独立项目之间相互调用实践

    本篇文章只涉及到应用层面,没有涉及到什么底层原理之类的,我目前的实力还没有达到那个级别.如果是大神级别的人看到这篇文章,请跳过. 项目框架也已经是搭建好了的,springboot版本为1.5,数据库操 ...

  5. 前台为html后台是asp在vs2012中建立什么,Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得...

    Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得 < type="text/javascript"> < type="text/java ...

  6. 《深入理解 Spring Cloud 与微服务构建》第八章 声明式调用 Feign

    ·# <深入理解 Spring Cloud 与微服务构建>第八章 声明式调用 Feign 文章目录 一.Feign 简介 1.简介 2.工作原理 二.写一个 Feign 客户端 三.Fei ...

  7. WinCC项目函数之间相互调用

    采用WinCC作为上位机框架进行开发工业控制界面,全局脚本中C-Editor进行开发工业控制模型. 我们用C#或者C++时,方法之间调用.类调用等等,比较灵活.其实WinCC和C#或者C++一样. 项 ...

  8. 讲讲微服务应该如何拆分模块

    系列文章目录 01.GoodGuy 的诞生(一个消息推送平台) 02.GoodGuy 试图去揣摩一个好产品会如何进行消息推送管理平台的需求设计 03.GoodGuy 个人开源项目部分技术选型的初步思考 ...

  9. 微服务架构与Docker容器之间关系

    微服务j架构与Docker容器之间关系 因公司业务市场的发展与技术架构等结合因素,希望接下来的产品架构能支撑轻量级.高并发.大数据.智能化.易维护.动态扩展等方向发展,因项目性能问题需要处理,公司架构 ...

最新文章

  1. 2019微信年度报告!!!
  2. 编译android系统小结
  3. HotApp小程序统计,第一个专业的微信第三方小程序统计工具
  4. 查询程序崩溃日志_PC 崩溃报告途径 amp; 临时解决方法
  5. 生成对抗网络gan原理_必读!TOP10生成对抗网络GAN论文(附链接)
  6. matlab频谱分析_罗德与施瓦茨两款新的信号和频谱分析仪 具有多种频率型号
  7. 【机器学习】机器学习从零到掌握之五 -- 教你使用归一化数值准备数据
  8. Oddz将于3月18日在Polkastarter进行IDO,此前已完成260万美元战略融资
  9. ArcGIS API for JavaScript实现分图层显示
  10. 成功的背后!(给所有IT人)
  11. UE破解及注册机下载
  12. 汉诺塔递归算法Java实现
  13. 软件工程知识点总结——第一、二部分
  14. 小程序AppId-当前开发者未绑定此AppId,请到小程序管理后台操作后重试
  15. 华为砍单,小米、荣耀谁会“上位”?
  16. 【RDMA】IBV_SEND_INLINE和IBV_SEND_SIGNALED的原理|RDMA小消息通信性能优化
  17. 流量的秘密—Google Analytics网站分析与优化技巧(第2版)
  18. 微信小程序用户登录信息过期处理
  19. sql 纵向求和_SQL求和
  20. 锐化 清晰度 对比度的区别

热门文章

  1. 点线面平面设计的概念是什么,分享点线结合构成设计图
  2. 3章等价类划分法-城市号码
  3. flasgger手写phpwind接口文档
  4. vb.net电子时钟实例
  5. 路由器和交换机的工作原理---笔面试
  6. web百度离线地图开发(详细教程)2019
  7. sklearn.svm.SVC的方法decision_function_shape:ovr 或者 ovo
  8. VideoRender和ImageRender项目中遇到的一些cpp错误
  9. 寻仙手游服务器无响应,寻仙手游进不去解决方法 寻仙手游怎么玩不了
  10. Kubernets 亲和性