SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者

SpringCloud组件之断路器Hystrix(hoxton版本) 1.Hystrix 简介 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就 阅读详情

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦

摘要

Spring Cloud OpenFeign 是声明式的服务调用工具,它整合了Ribbon和Hystrix,拥有负载均衡和服务容错功能。Feign是声明式的服务调用工具,我们只需创建一个接口并用注解的方式来配置它,就可以实现对某个服务接口的调用,简化了直接使用RestTemplate来调用服务接口的开发量。Feign具备可插拔的注解支持,同时支持Feign注解、JAX-RS注解及SpringMvc注解。当使用Feign时,Spring Cloud集成了Ribbon和Eureka以提供负载均衡的服务调用及基于Hystrix的服务容错保护功能。

1. 创建一个feign-service模块

注意:配置及搭建参考之前第(一)文章的 客户端 配置

  

1.1pom.xml新增feign依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
</dependencies>

1.2启动类新增 @EnableFeignClients

package com.zqh.www;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.core.env.Environment;

/**
 * 开启feign
 */
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class FeignServiceApplication {

    private final static Logger logger = LoggerFactory.getLogger(FeignServiceApplication.class);

    public static void main(String[] args) {
        Environment env = SpringApplication.run(FeignServiceApplication.class, args).getEnvironment();
        logger.info(
                "\n----------------------------------------------------------\n\t"
                        + "Application '{}' is running! Access URLs:\n\t"
                        + "Local: \t\thttp://localhost:{}{}"
                        + "\n----------------------------------------------------------",
                env.getProperty("spring.application.name"), env.getProperty("server.port"),
                env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
    }
}

1.3 创建feign消费者service

package com.zqh.www.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Map;

@FeignClient(value = "user-service", fallback = UserFallbackService.class)
public interface IUserService {

    @GetMapping("/api/user/getUserList")
    Map<String, Object> getUserList();

//    不同传参方式样例
//    JSON格式传参
//    @PostMapping("/user/save")
//    Map<String, Object> save(@RequestBody User user);

//    路径传参
//    @GetMapping("/user/{id}")
//    Map<String, Object> getUser(@PathVariable Long id);

//    表单传参
//    @GetMapping("/user/listUsersByIds")
//    Map<String, Object> listUsersByIds(@RequestParam List<Long> ids);

//    表单传参
//    @GetMapping("/user/getUserByUsername")
//    Result<User> getUserByUsername(@RequestParam String username);
}

1.4 创建熔断处理类

package com.zqh.www.service;

import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 降级处理类
 */
@Component
public class UserFallbackService implements IUserService {

    @Override
    public Map<String, Object> getUserList() {
        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("code", "500");
        resultMap.put("msg", "调用失败,服务被降级");
        resultMap.put("data", null);
        return resultMap;
    }
}

1.5 创建controller测试调用

package com.zqh.www.controller;

import com.zqh.www.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/api/feign")
public class FeignController {

    @Autowired
    private IUserService userService;

    @GetMapping("/getUserList")
    public Map<String, Object> getUserList() {
        return userService.getUserList();
    }
}

1.6 yml开启feign常用配置以及日志

server:
  port: 8087
spring:
  application:
    name: feign-service
eureka:
  client:
    service-url:
      #注册地址
      defaultZone: http://root:root@localhost:8081/eureka/
  #显示服务器IP加端口
  instance:
    hostname: localhost
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

#feign常用配置
feign:
  hystrix:
    #在Feign中开启Hystrix
    enabled: true
  compression:
    request:
      #是否对请求进行GZIP压缩
      enabled: false
      #指定压缩的请求数据类型
      mime-types: text/xml,application/xml,application/json
      #超过该大小的请求会被压缩
      min-request-size: 2048
    response:
      enabled: false #是否对响应进行GZIP压缩

# 配置feign日志级别
logging:
  level:
    com.jourwon.springcloud.service: debug

2.测试

2.1 正常测试

2.2 负载服务测试

 

2.3 关闭一个服务

结果会出现短暂的服务降级,然后回归正常

 

3.gitee地址

源码参考

spring-cloud-alibaba-plus:基于Spring Boot 2.3.X、Spring Cloud Hoxton版和 Spring Cloud Alibaba 2.2.X 微服务快速开发平台 技术之路永无止境,菜鸟永远在路上 spring-cloud-alibaba-plus 基于Spring Boot(2.3.3.RELEASE)、Spring Cloud Hoxton版(Hoxton.SR8)和 Spring Cloud Alibaba(2.2.1.RELEASE)框架,构建微服务应用简单、快速、高效开发平台,致力于,服务于程序爱好者、程序猿、攻城狮等广大人群,不足之处请各位武林高手批评、指正。在此,仅代表个人对您表达衷心的感谢和敬意。 1、简介 本项目即为学习实战资料,也为二次进行开发平台。 2、技术栈 2.1后端技术 1.分布式系统套版本:Spring Cloud Hoxton.SR8 2.服务治理注册与发现:Spring Cloud Nacos (Eureka/Consul) 3.分布式统一配置中心:Spring Cloud Nacos (Config) 4.熔断隔离 立即下载

相关推荐

EtherCAT简介

EtherCAT(EtherNet Control Automation Technology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(EtherCAT slave controller)芯片。主站的搭建方式有很多,例如:开源主站IGH、SOEM、商业化主站TwinCAT等。

m0_73482095的博客 1万+

SpringCloud Hoxton SR8最新版,博文有点长耐心看完不说精通,至少从零搭建没问题了

SpringCloudNetflix 简介 Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-t

吴杰 7300

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南

在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。

AI手套的博客 1739

SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦https://spring.io/blog/2020/08/28/spring-cloud-hoxton-sr8-has-been-released 开发工具:ideaj社区版 jar管理:maven 聚合构建 1.创建父pom项目 注意: Spring Assistant是一个插件,需要自己安装,安装教程参考 第三幅图,以前是不用强制选择的组件的,应.

itjavaee的博客 4567

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 487

[零基础]用docker搭建Hadoop集群

[零基础]用docker搭建Hadoop集群,每一步都有详细的解释!

weixin_56114243的博客 2万+

Springboot整合 openfeign(基于最新Hoxton.SR8)

文章目录项目整体结构依赖openfeign的一些配置order-service-apiorder-servicepay-service测试源码下载 项目整体结构 说明: 所有公共依赖都放在了父pom中,API接口抽离放在单独模块 依赖 <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version

念念不忘,必有回响 4965

手把手教你学simulink实例:基于Simulink的风力发电系统建模与仿真

风力发电作为一种清洁、可再生的能源形式,近年来得到了快速发展。风力发电系统的性能优化和控制策略设计对于提高发电效率、降低运行成本具有重要意义。本项目旨在使用MATLAB/Simulink平台,对风力发电系统进行建模与仿真,研究其动态特性,并验证控制策略的有效性。通过建立风力发电机、传动系统、发电机及电力电子变换器等子系统的模型,实现对风力发电系统的全面分析。

MHD0815的博客 556

SpringCloud 声明式服务调用OpenFeign Hoxton版本

Spring Cloud OpenFeign简介:Spring Cloud OpenFeign通过自动配置和Spring环境以及其他Spring编程模型习惯用法提供Spring Boot应用程序对OpenFeign的集成。而Feign是一个声明式的Web服务客户端,它使编写Web服务客户端变得更容易。使用Feign需创建一个接口并对其加上注解,它具有包括Feign注解和JAX-RS注解的可插入的注解支持。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注解的支持,并

RtxTitanV的博客 3368

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

2025机械考研复试面试问题汇总篇(含13门科目),考研机械复试专业面试常见重点问题总结!考研机械复试专业面试准备看这一篇就够了!

(完整版内容:)1.汇集了本科各科的重点知识及多个机械名校800多个常见问题,共8.7万字185页,涵盖机械所以专业课的重点知识和常见问答。 2.涉及机械大类重点科目,包括:材料力学、控制工程、数控技术、机械制造技术基础、理论力学、液压传动、机械设计、机械原理、工程材料、互换性与技术测量、测试技术、汽车理论、程序设计与C语言等13门必修课。

weixin_56510835的博客 1861

【工作踩坑】openFeign 与 springboot版本对应问题

1、Faild to load ApplicationContext ,嵌套着: Error creating bean with name ‘configurationPropertiesBeans‘ defined in class path resourcespringboot: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent openFeign: https://mvnrep

weixin_44292256的博客 8341

OSG第三方库编译之二十一:minizip编译(Windows、Linux、Macos环境下编译)

OSG编译;第三方库;跨平台编译;minizip编译(Windows、Linux、Macos环境下编译)

LuckyHanMo的博客 2619

SpringCloud微服务小白也能搭(Hoxton.SR8)(四)Hystrix|断路器

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦 SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现 SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者 SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者 摘要 Spring Cloud Netflix.

itjavaee的博客 947

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

spring cloud的Hoxton.SR1版本的feign的优雅降级的实现

spring cloud的Hoxton.SR1版本的feign的优雅降级的实现源码下载前言feign的优雅降级的实现注册中心账户微服务订单微服务验证feign的降级 源码下载 大家可以直接微信扫描上面的二维码关注我的公众号,然后回复hoxton feign里面就会给到源代码的下载地址同时会附上相应的视频教程,并定期的与大家分享相关的技术文章。 前言 在我们基于spring cloud进行开发的时...

笨鸟不会飞 2807

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

springcloud_入门示例_Hoxton.SR8

参考文档 、 参考文档1 、 参考文档2 Spring cloud 入门示例 使用spring cloud搭建微服务过程,集成eureka(注册中心)、Zuul(网关)、Feign(本地化的远程调研、负载均衡)、hystrix(熔断器)。 使用的spring cloud 是Hoxton.SR8版本。 父工程 <!-- 父项目pom.xml --> <parent> <groupId>org.springframework.boot</groupId>

蜗牛跑的快 1476

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SpringCloud版本Hoxton SR5 --- 第一讲:认识

什么是SpringCloud ?我用好理解的方式作比喻: 这里我们拿京东的网站做解释,京东不一定这么搞得,但是思想是一致的。而SpringCloud就是一种微服务架构的思想;首先京东支持14亿人访问,这个架构一定不简单。我们看京东的首页网站:https://www.jd.com/京东的商品列表:https://list.jd.com/京东商品详情:https://item.jd.com/,购物车:https://cart.jd.com/等等。有没有发现一个问题,就是他们的网站地址不一样 ?这就证明...

chuxin_mm的博客 2635

【SpringCloud】【Hoxton】基础环境准备

1 引言 记2020年3月8日 SpringCloud 最新版为Hoxton SR3。 2 创建父工程 (1) spring-cloud (2) pom文件 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.comp...

qq_34125999的博客 2336

SpringCloud系列教程(三)之Open Feign【Hoxton版】

阅读提醒: 本文面向的是有一定springboot基础者 本次教程使用的Spring Cloud Hoxton RELEASE版本 本文依赖上一篇的工程,请查看上一篇文章以做到无缝衔接,或者直接下载源码:https://github.com/WinterChenS/spring-cloud-hoxton-study 前情概要 SpringCloud系列教程(一)开篇 SpringCloud系列教程(二)之Nacos | 8月更文挑战 (juejin.cn) 本文概览 RPC是什么? Sprin.

LuisChen的博客 1589

Feign的远程调用--微服务重试的坑

背景 spring cloud Hoxton.SR1 微服务多实例发布时,通过Ribbon实现的重试机制,在停掉一个服务之后并没有触发重试机制; 我的主要配置(服务的消费者) ribbon: eager-load: enabled: true ReadTimeout: 10000 # 获取到响应内容的超时时间 ConnectTimeout: 2000 ...

weixin_44032384的博客 1509

SpringCloud版本Hoxton SR5 --- 第三讲:Ribbon 、Ribbon与Feign配合使用

引用我写的:https://blog.csdn.net/chuxin_mm/article/details/106674486先看Ribbon、Fegin可以完成的功能,或者说他在项目中的定位和作用。 之前说的功能和作用都是用大白话,我觉得还是通俗易懂的。 专业术语: ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Ne..

chuxin_mm的博客 1133

com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)L

这里写自定义目录标题背景问题解决 背景 随着Spring Cloud Alibaba 2.2.0.RELEASE的发布,终于可以使用最新的Spring Boot和Spring Cloud。 现在的环境 依赖 版本 Spring Boot 2.2.5.RELEASE Spring Cloud Hoxton.SR3 Spring Cloud Alibaba 2.2.0.RELE...

适己而忘人者,人之所弃;克己而立人者,众之所戴。 6817

毕业设计无从下手?四个步骤手把手带你搭建一个后台微服务架构

开始之前要先设置jdk,maven,自动导包,编码格式,等相关信息。遵循 约定 > 编码的规定

Elegance never goes out of fashion 4517

SpringCloud - Feign实现声明式REST调用

6.使用Feign实现声明式REST调用 环境版本 - SpringCloud Hoxton.** 和 SpringBoot 2.** 兼容版本 注意:SpringCloud 和 SpringBoot请到Spring官网查看版本对应关系 避免启动时一些依赖问题的错误 <!--SpringBoot依赖 2.2.7.RELEASE--> <dependency> <groupId>org.springframework.boot</groupId>

Thread丶 485

springcloud入门

springcloud入门

不更了,主打一个陪伴 2万+

SpringCloud微服务!!

SpringCloud微服务组件Eureka,nacos,Feign,Gateway组件

weixin_50769390的博客 1204
上一篇: SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者
下一篇: SpringCloud微服务小白也能搭(Hoxton.SR8)(四)Hystrix|断路器
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值