FeignClient服务调用案例

2024-05-28 00:18

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

FeignClient服务调用案例,由A服务调用B服务,分别展示了get和post调用的各种传参方式。

A服务

  • A服务FeignClient调用服务类FeignDemoService
package com.github.third.feign;import com.github.common.util.Response;
import com.github.third.feign.fallback.FeignDemoServiceImpl;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;import java.util.Map;/*** @Project:collection* @Package:com.github.third.feign* @Date:2019/3/22 17:30* @Author:songfayuan* @Address: * @Description: FeignClient服务调用案例* @Modified By:*/
@FeignClient(name = "upms-service", fallback = FeignDemoServiceImpl.class)
public interface FeignDemoService {/*** feign get 请求<单个参数请求>* @param params* @return*/@GetMapping("/demo/noAuthorization/feignGetRequest1")Response feignGetRequest1(@RequestParam("params") String params);/*** feign get 请求<多参数请求>* @param params1* @param params2* @return*/@GetMapping("/demo/noAuthorization/feignGetRequest")Response feignGetRequest(@RequestParam("params1") String params1, @RequestParam("params2") String params2);/*** feign get 请求<单个参数请求>* @return* @author songfayuan* @date 2019/03/25 11:19*/@GetMapping("/demo/noAuthorization/feignGetRequest3/{params}")Response feignGetRequest3(@PathVariable("params") String params);/*** feign post 请求<单参、多参数请求>* @return*/@PostMapping("/demo/noAuthorization/feignPostRequest")Response feignPostRequest(@RequestBody Map<String, Object> params);/*** feign post 请求<单参数请求>* @param params* @return*/@PostMapping("/demo/noAuthorization/feignPostRequest2")Response feignPostRequest2(@RequestParam("params") String params);
}
  • 异常回调类 FeignDemoServiceImpl
package com.github.third.feign.fallback;import com.github.common.util.Response;
import com.github.third.feign.FeignDemoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import java.util.Map;/*** @Project:collection* @Package:com.github.third.feign.fallback* @Date:2019/3/22 17:30* @Author:songfayuan* @Address: * @Description: FeignClient服务调用案例失败回调* @Modified By:*/
@Slf4j
@Service
public class FeignDemoServiceImpl implements FeignDemoService {@Overridepublic Response feignGetRequest1(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest1");return null;}@Overridepublic Response feignGetRequest(String params1, String params2) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest");return null;}@Overridepublic Response feignGetRequest3(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest3");return null;}@Overridepublic Response feignPostRequest(Map<String, Object> params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest");return null;}@Overridepublic Response feignPostRequest2(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest2");return null;}
}

B服务

  • 具体业务功能DemoController
package com.github.admin.controller.demo;import com.github.common.util.Response;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicInteger;
import org.springframework.web.bind.annotation.*;import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;/*** 描述:demo* @author songfayuan* 2017年8月31日下午2:07:19*/
@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {/*** feign get 请求<单个参数请求>* @param params* @return* @author songfayuan* @date 2019/03/22 18:29*/@GetMapping("/noAuthorization/feignGetRequest1")public Response feignGetRequest1(@RequestParam("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign get 请求<多参数请求>* @param params1* @param params2* @return* @author songfayuan* @date 2019/03/22 18:29*/@GetMapping("/noAuthorization/feignGetRequest")public Response feignGetRequest(@RequestParam("params1") String params1, @RequestParam("params2") String params2){log.info("请求参数params1 = {}, params2 = {}", params1, params2);return Response.success(params1 + "&" + params2);}/*** feign get 请求<单个参数请求>* @return* @author songfayuan* @date 2019/03/25 11:19*/@GetMapping("/noAuthorization/feignGetRequest3/{params}")public Response feignGetRequest3(@PathVariable("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign post 请求<单参、多参数请求>* @param params* @return* @author songfayuan* @date 2019/03/22 18:29*/@PostMapping("/noAuthorization/feignPostRequest")public Response feignPostRequest(@RequestBody Map<String, Object> params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign post 请求<单参数请求>* @param params* @return* @author songfayuan* @date 2019/03/25 11:00*/@PostMapping("/noAuthorization/feignPostRequest2")public Response feignPostRequest2(@RequestParam("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}}
  • 文中用到的Response类
package com.github.common.util;import com.fasterxml.jackson.annotation.JsonInclude;import java.io.Serializable;/*** 响应信息主体** @param <T>* @author songfayuan*/
//@JsonInclude(JsonInclude.Include.NON_NULL)
public class Response<T> implements Serializable {private static final long serialVersionUID = 1L;private static final int SUCCESS_CODE = 200;private static final String SUCCESS_MSG = "success";private static final int ERROR_CODE = 500;private static final String ERROR_MSG = "服务器内部异常,请联系技术人员"; //将error改成了内容信息public static final int NO_LOGIN = -1;public static final int SUCCESS = 200;public static final int FAIL = 500;public static final int NO_PERMISSION = 2;private String msg = "success";private int code = SUCCESS;private T data;public Response() {super();}public Response(T data) {super();this.data = data;}public Response(T data, String msg) {super();this.data = data;this.msg = msg;}public Response(int code, T data, String msg) {super();this.code = code;this.data = data;this.msg = msg;}public Response(int code, String msg) {super();this.code = code;this.msg = msg;}public Response(Throwable e) {super();this.msg = e.getMessage();this.code = FAIL;}public static Response success() {Response resp = new Response();resp.code = (SUCCESS_CODE);resp.msg = (SUCCESS_MSG);return resp;}public static Response successResponse(String msg) {Response resp = new Response();resp.code = SUCCESS_CODE;resp.msg = msg;return resp;}public static Response error() {Response resp = new Response();resp.code = (ERROR_CODE);resp.msg = (ERROR_MSG);return resp;}public static Response errorResponse(String msg) {Response resp = new Response();resp.code = ERROR_CODE;resp.msg = msg;return resp;}public static Response response(int code, String msg) {Response resp = new Response();resp.code = (code);resp.msg = (msg);return resp;}public static Response response(int code, String msg, Object data) {Response resp = new Response();resp.code = (code);resp.msg = (msg);resp.data = data;return resp;}public static Response success(Object data) {Response resp = new Response();resp.code = (SUCCESS_CODE);resp.msg = (SUCCESS_MSG);resp.data = data;return resp;}public static Response error(Object data) {Response resp = new Response();resp.code = (ERROR_CODE);resp.msg = (ERROR_MSG);resp.data = data;return resp;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}

这篇关于FeignClient服务调用案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009000

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于