Spring Cloud之统一fallback接口

深入解析Spring Cloud Config:多样配置中心的实现与高可用策略 这篇文章探讨了配置中心的重要性及其在分布式系统中的应用,特别关注Spring Cloud Config。文章首先介绍了配置中心的由来、功能及选择标准,然后详细阐述了Spring Cloud Config的基本实现方法,包括结合Git、关系型数据库(MySQL)和非关系型数据库(MongoDB)的方案。此外,还讨论了配置中心的高可用性、客户端自动刷新机制及安全认证等扩展功能。最后,文章对比了Spring Cloud Config与Apollo的特性,强调Apollo在企业级应用中的优势。 阅读详情

Spring Cloud之统一fallback接口

每个方法都配备一个fallback方法

不利于开发的

用类的方式

并且整个方法都是在同一个线程池里面的

 

主要对于client的修改:

 

 

 pom:

<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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.toov5</groupId>
		<artifactId>parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>toov5-api-order-service-impl</artifactId>

	<dependencies>
		<dependency>
           <groupId>com.toov5</groupId>
			<artifactId>toov5-api-order-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		
     <dependency>
           <groupId>com.toov5</groupId>
			<artifactId>toov5-api-member-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		
		
	</dependencies>


</project>

 实现类

package com.toov5.api.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.toov5.api.entity.UserEntity;
import com.toov5.api.feign.MemberServiceFeign;
import com.toov5.api.service.IOrderService;
import com.toov5.base.BaseApiService;
import com.toov5.base.ResponseBase;

@RestController
public class OrderServiceImpl extends BaseApiService implements IOrderService {
    @Autowired
    private MemberServiceFeign memberServiceFeign;

    @RequestMapping("/orderToMmeber")
    public String orderToMember(String name) {
        UserEntity user = memberServiceFeign.getMember(name);
        return user == null ? "没有" : user.toString();
    }

    @RequestMapping("/orderToMemberUserInfo")
    public ResponseBase orderToMemberUserInfo() {
        return memberServiceFeign.getUserInfo();
    }

    @HystrixCommand(fallbackMethod = "orderToMemberUserInfoHystrixFallback")
    @RequestMapping("/orderToMemberUserInfoHystrix")
    public ResponseBase orderToMemberUserInfoHystrix() {
        System.out.println("orderToMemberUserInfoHystrix" + "线程池名称" + Thread.currentThread().getName());
        return memberServiceFeign.getUserInfo();
    }

    public ResponseBase orderToMemberUserInfoHystrixFallback() {
        return setResultSuccess("请稍后再试~");
    }

    @RequestMapping("/orderToMemberUserInfoHystrixdSecond")
    public ResponseBase orderToMemberUserInfoHystrix_demo02() {
        System.out.println("orderToMemberUserInfoHystrix" + "线程池名称" + Thread.currentThread().getName());
        return memberServiceFeign.getUserInfo();
    }

    @RequestMapping("/orderInfo")
    public ResponseBase orderInfo() {
        System.out.println("orderInfo" + "线程池名称" + Thread.currentThread().getName());
        return setResultSuccess();
    }

}

feign

package com.toov5.api.feign;

import org.springframework.cloud.openfeign.FeignClient;

import com.toov5.api.fallback.MemberServiceFallback;
import com.toov5.api.service.IMemberService;
@FeignClient(value="app-toov5-member",fallback = MemberServiceFallback.class)
public interface MemberServiceFeign extends IMemberService {
  
}
 

fallback类

package com.toov5.api.fallback;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;

import com.toov5.api.entity.UserEntity;
import com.toov5.api.feign.MemberServiceFeign;
import com.toov5.base.BaseApiService;
import com.toov5.base.ResponseBase;

@Component
@RequestMapping("fallback/")   //这个可以防止 容器中有与父类重复的 requestMapping!!!
public class MemberServiceFallback extends BaseApiService implements  MemberServiceFeign {
    
     @Override
    public ResponseBase getUserInfo() {
         return setResultError("来自类的提示:系统错误,请稍后重试!");
    }
     
    @Override
    public UserEntity getMember(String name) {
        // TODO Auto-generated method stub
        return null;
    }

}

启动类:

package com.toov5.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication(scanBasePackages={"com.toov5.*"})
@EnableEurekaClient
@EnableFeignClients
@EnableHystrix
public class AppOrder {
   public static void main(String[] args) {
    SpringApplication.run(AppOrder.class, args);
}
}

 

 yml

###服务启动端口号
server:
  port: 8020
###服务名称(服务注册到eureka名称)  
spring:
    application:
        name: app-toov5-order
###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka

           
###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###是否需要从eureka上获取注册信息
    fetch-registry: true

    ###设置feign客户端超时时间
ribbon:
###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
 ReadTimeout: 5000
###指的是建立连接后从服务器读取到可用资源所用的时间。 
 ConnectTimeout: 5000
  
  #spring cloud 默认开启ribbon 
  
##开启Hystrix断路器  
feign:
  hystrix:
    enabled: true

#### hystrix禁止服务超时时间
#hystrix:  
# command: 
#   default: 
#      execution:   
#       timeout: 
#        enabled: false
    


    

  启动后:

感谢:https://www.jb51.net/article/138758.htm 这篇文章的参考!

 对于报错:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.toov5.api.feign.MemberServiceFeign' method
public abstract com.toov5.base.ResponseBase com.toov5.api.service.IMemberService.getUserInfo()
to {[/getUserInfo]}: There is already 'memberServiceFallback' bean metho

 

的解决办法在 fallback的类上面加上 

@RequestMapping("fallback/")   //这个可以防止 容器中有与父类重复的 requestMapping!!!
黑客渗透测试后门隐藏技术揭秘 本文介绍了在授权渗透测试中隐藏后门文件(muma.exe)的多种技术手段。主要包括:通过WinRAR自解压脚本将后门与正常程序捆绑实现双开;利用系统自动运行目录和注册表实现开机自启;修改文件图标伪装成常用软件;将文件存放在冷门系统目录;设置系统+隐藏双重属性增强隐蔽性。此外还涉及对抗安全软件的加壳(UPX)、免杀(msfvenom编码)技术,以及进程注入、日志清除等运行隐藏方法。所有技术仅限合法授权测试使用,未经授权使用将面临法律责任。 阅读详情

相关推荐

完美解决LBP2900打印机安装驱动提示无法识别USB及连接错误等问题(附Win11全新安装支持及卸载方案)

LBP2900打印机虽然经典老旧,但在Win11上依然可以完美使用!许多网上教程都无视安装失败后的问题,在此分享一种全新、100%有效的方法来解决驱动连接错误和无法识别USB设备的问题。无论是新安装还是卸载重装,这个方法都适用。本文整合了通用驱动包,支持Win2000到Win11系统,操作简单,轻松摆脱安装困扰,享受无忧打印体验!

心开始の未来~的博客 2万+

SpringCloud Feign 全局Fallback实现【SpringBoot2.7+】

在微服务架构中,服务之间的通信是至关重要的。随着微服务规模的扩大,服务调用的复杂性也在不断增加。Spring Cloud Feign作为Spring Cloud生态中的一个核心组件,提供了一种简洁、声明式的方式来进行服务间的调用。通过 Feign,开发者可以像调用本地方法一样调用远程服务,大大减少了编写复杂 HTTP 请求代码的工作量。Feign与Spring Cloud的其他组件(如Eureka、Ribbon)结合使用,能够实现更加高效、灵活的服务调用机制。

MCN的博客 3256

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

基于OpenFeign + Sentinel框架实现统一服务降级

,但是发现非常繁琐:针对每一个使用@FeignClient注释的远程服务都需要实现一个FallbackFactory,并将实现的FallbackFactory配置为@FeignClient注解fallbackFactory属性的值。举个例子:如果项目有10个RemoteXXService远程接口服务,每个服务包含5个方法。为了实现所有服务及其方法调用时的服务降级,需要自定义实现10个RemoteXXServiceFallbackFactory接口,总共需要实现50个方法。

1533

PostgreSQL+PostGIS空间数据入库实战:从矢量栅格到GeoServer发布全流程

本文详细介绍了将矢量与栅格空间数据导入PostgreSQL并利用PostGIS扩展进行管理的完整流程。内容涵盖环境搭建、使用shp2pgsql和raster2pgsql工具进行数据入库、基础空间查询验证,以及最终通过GeoServer发布为地图服务的实战步骤,为构建空间数据平台提供清晰指引。

weixin_29268267的博客 289

Android15音频进阶之4种调试线程死锁利器(八十九)

本篇目的:Android15音频进阶之4种调试线程死锁利器对于开发者来说,最令人头疼的,莫过于多线程交互出问题的时候,我们应该从哪里找突破口呢?下面来介绍一下调试Android音频中线程死锁的四种方案线程死锁是并发编程中常见的问题之一,它指的是在多个线程竞争资源的过程中,由于相互等待对方持有的资源而无法继续执行,从而导致所有线程都无法向前推进的现象。死锁不仅会导致系统性能严重下降,甚至可能导致整个系统崩溃。线程死锁的产生有四个必要条件:互斥条件:资源不能被多个线程共同使用,只能由一个线程独占。

Android系统攻城狮 1997

SpringCloud使用sentinel+openfeign 实现统一降级,自动注入返回值

在使用openFeign+sentinel的时候总是要写很多的Fallback或者FallbackFactory就想能不能写一个统一的降级,自动注入失败的返回值。也方便管理。

a_Roin的博客 1961

全面认识PFC和LLC

想象一下,你在拉一辆车,如果你的力气都用在推动车子前进的方向上,这样拉车会比较轻松。而如果你的力气用在不正确的方向,比如侧向、斜向,那就需要更大的力气才能推动车子。PFC就是在帮助电流“朝着正确的方向”流动,这样可以用更少的能量做更多的事情,减少无用的功率损耗。PFC负责将电流方向对齐,让电源效率更高,而LLC负责电压的高效转换,两者配合可以在更宽的负载范围内保持高效率。综上所述,PFC LLC电路是一种高效的电源转换电路,通过PFC模块和LLC模块的组合,实现了从交流电到直流电的高效转换。

weixin_43199439的博客 6098

【sentinel】sentinel集成feign之Fallback统一处理(十二)

前言 转载:https://blog.youkuaiyun.com/ttzommed/article/details/90669320

Meditation_Crazy 2821

Unity 工具 之 ZXing QRCode 二维码的生成和识别(可设置生成不同颜色的/带图标的二维码)

Unity 基础 之 ZXing QRCode 二维码的生成和识别(可设置生成不同颜色的/带图标的二维码) 目录 Unity 基础 之 ZXing QRCode 二维码的生成和识别(可设置生成不同颜色的/带图标的二维码) 一、简单介绍 二、实现原理 三、注意实现 四、效果预览 五、ZXing.net ( zxing.unity.dll ) 插件下载 六、实现步骤 七、关键代码 一、简单介绍 Unity 开发中,自己整理的一些游戏开发可能用到的功能,整理归档,方便游...

仙魁XAN 9824

Linux安装Docker(图文解说详细版)

第一步,下载docker 下载地址: https://download.docker.com/linux/static/stable/x86_64/ 这次的演示我们使用docker-18.06.3-ce.tgz 这个版本 第二步,上传到云服务器上面 使用rz命令上传或者fltp工具进行上传 第三步,解压文件 第四步,将解压出来的docker文件复制到 /usr/bin/ 目录下 这么做的目的是将docker交给linux自己去管理,类似spring中的ioc(猜测,非正经知识) cp docker

编码人生 1万+

Spring Cloud 使用Sentinel代替Hystrix做为Feign的熔断器之Fallback统一处理

本文的思想建立在已经能初步使用Feign的基础之上,如果你还是零基础,建议先去补充一些Spring Cloud Feign +Hystrix的知识。Spring Cloud Feign默认使用Hystrix作为熔断器,随着Spring Cloud Alibaba家族日益壮大,Sentinel-0.9.0版本也支持Gateway了。今天我们来看看如何简化代码,使用Feign,如何用Sentinel代...

我的小地方 1万+

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4785

如何在Dante Cloud中使用适配器模式实现不同接口的兼容与转换

Dante Cloud作为国内首个支持阻塞式和响应式服务并行的微服务云原生基座,其独特的适配器模式设计让系统能够灵活兼容不同微服务基础设施。本文将深入探讨Dante Cloud如何通过适配器模式实现Spring Cloud Alibaba、Spring Cloud Tencent和原生Spring Cloud生态的无缝切换,帮助企业快速构建高质量、低安全漏洞的微服务架构。 ## 适配器模式在微服

gitblog_00279的博客 859

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring cloud中Feign的使用简单示例(Spring cloud学习笔记 7)

一、简介 Feign是Netflix开发的声明式的Http客户端,使用时只需要创建一个接口,并在接口上添加注解就可以。Feign支持自带的注解和JAX-RS注解等。Spring cloud对Feign进行了增强,Feign支持了Spring MVC的注解,并且整合了Ribbon和Eureka,从而让Feign的使用更加方便。 二、对服务消费者添加Feign支持 问题回顾: 之前我们在服务消费者(车...

showadwalker的博客 1174

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Hystrix - 全局 fallback 工厂:统一兜底逻辑设计

本文探讨了在微服务架构中使用Hystrix实现全局fallback工厂的设计方案。针对传统降级逻辑存在的代码重复、维护困难等问题,提出通过统一管理、灵活配置的工厂模式来优化降级处理。文章详细介绍了核心设计思路,包括Fallback策略接口定义、具体降级策略实现(默认策略、缓存策略、重试策略等)以及全局工厂类的构建。通过将降级逻辑与命令定义解耦,该方案显著提升了代码的可维护性和扩展性,为微服务容错处理提供了系统化解决方案。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

@FeignClient 对接口进行服务降级方法的实现,调用不起作用

feign: #hystrix: #enabled: true过时了 springcloud2020.0.1改为以下了 circuitbreaker: enabled: true #feign作为客户端使用hystrix必须开启,服务端没有feign所以没有这个. 已经没有前者注解了。现在改为circuitbreaker了 修改之后接口实现类就可以被成功调用,完美。 //报错了以后执行实现类中的方法,等于时把一个接口的fallback提取了,不用再controller一个个写.

DCFT_newone的博客 2175

feign 的使用 和回调类的使用 防止代码冗余

本文章是在 负载均衡和容错机制 实现 可参考 虽然使用了负载均衡(Ribbon)和容错机制(Hystrix)可以实现负载均衡和容错处理,但是这个编码在实现大量业务时会显得太过于冗余(如,多参数的URL拼接) 一 :首先导入依赖 <!--springboot 整合fegnin客户端--> <dependency> <groupId>org.springfr...

weixin_43726822的博客 3056

SpringCloud-Hystrix服务降级FallBack的全局降级和通用降级返回(Day6)

全局降级服务配置 如果每一个方法配置一个服务降级方法,技术上可以,但是不聪明.这样需要大量的的工作.我们需要一个全局的返回结果 业务层 package com.gcl.springcloud.controller; import com.gcl.springcloud.service.PaymentHystrixService; import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties; import com.netf

Anoraker的小屋 7425

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

theme: vue-pro 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 服务间调用是微服务体系中必不可少的一部分,在springcloud alibaba的官网中,推荐使用是dubbo,但因为并发量比较小,同时dubbo相对比较复杂,所有楼主在服务间调用选型时,依然选择了openfeign。同时将服务间调用的接口封装为子工程,进行统一的api管理。避免小伙伴们造重复的轮子。 1.新建api子工程 1.搭建子工程 这里新建了一个子工程,文件结构如下。 2.添加pom.xml .

小鲍侃java 1万+

Vue路由刷新404与Spring Cloud Gateway路径转发问题排查实录

在前后端分离架构中,Nginx反向代理、Spring Cloud Gateway路由转发与前端路由共同构成一条完整链路,任何一层路径处理不一致都会引发404。本文从多级代理环境下的常见故障切入,梳理了Vue Router history模式刷新白屏、接口路径被StripPrefix误剥、Nginx proxy_pass尾斜杠导致前缀丢失等典型问题。理解各层的路径处理原理,掌握通过响应体快速定位404来源的分层排除法,能显著提升全链路排障效率。Nginx配置、网关路由规则、axios baseURL以及后端c

weixin_33100393的博客 183

使用 @FeignClient 处理异常

在使用 @FeignClient 调用服务时,您可以通过以下方式处理异常。使用该方式,服务端接口http状态码还是200通用响应类@Data/*** 操作返回信息*//*** 操作返回信息代码*//*** 返回具体数据*/this.setMsg("操作成功");error();this.msg = "操作成功";全局异常处理器@Slf4jreturn new RestResponse().error(500, "接口调用失败")

wq975826228的博客 900

Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流

Nacos作为注册中心和配置中心的基础教程,到这里先告一段落,后续与其他结合的内容等讲到的时候再一起拿出来说,不然内容会有点跳跃。接下来我们就来一起学习一下Spring Cloud Alibaba下的另外一个重要组件:Sentinel。 Sentinel是什么 Sentinel的官方标题是:分布式系统的流量防卫兵。从名字上来看,很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件,...

weixin_30869099的博客 131

Spring Cloud Feign(第四篇)之Fallback

介绍Fallback两种使用方式,实现Feign接口和实现FallbackFactory工厂接口

孙平平的博客 7万+

Spring Cloud Feign 之Fallback初体验

SpringCloud Feign 之 Fallback初体验 在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件。Feign是声明式,模板化的HTTP客户端,可以帮助我们更方便快捷调用HTTP API。本文主要针对Feign的熔断机制Fallback进行简单介绍。Fallback主要是用来解决依赖的服务不可用或者调用服务失败或超时,使用默认的返回值。 1.引入Feign ...

Lan_Xuan 1045

Spring cloud gateway 详解和配置使用(文章较长)

目录 spring cloud gateway 介绍 1. 网关是怎么演化来的 2. 网关的基本功能 3.关于Spring Cloud Gateway 4.Spring Cloud Gateway 功能特征 5.predicate简介 6.GatewayFilter 工厂介绍 7.集成Hystrix的断路器功能 8.请求限流 pom.xml application.ym...

荡漾 21万+
上一篇: SrpingCloud 之SrpingCloud config分布式配置中心实时刷新
下一篇: Spring Cloud之网关
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值