微服务框架 SpringCloud微服务架构 服务异步通讯 50 消息可靠性 50.4 失败重试机制 50.4.1 消费者失败重试

news2024/11/23 10:39:34

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

服务异步通讯

文章目录

      • 微服务框架
      • 服务异步通讯
      • 50 消息可靠性
        • 50.4 失败重试机制
          • 50.4.1 消费者失败重试

50 消息可靠性

50.4 失败重试机制

50.4.1 消费者失败重试

OK,上回我们已经实现了消费者 的确认机制,

在这里插入图片描述

这种机制就能够确保 消息至少能被消费者 消费一次

不过这种模式也有一个问题:当消费者消费失败后,它会返回nack,这样消息会回到MQ 的队列中,这种消费者又监听到了,但是又消费失败,就出现 了上节中的刷屏画面

如果代码没问题,可能消息最终可以被消费掉,但是如果代码本身有问题

在这里插入图片描述

这样就会一直“踢皮球”,给服务器带来很多的压力

【消费者失败重试机制】

当消费者出现异常后,消息会不断requeue(重新入队)到队列,再重新发送给消费者,然后再次异常,再次requeue,无限循环,导致mq的消息处理飙升,带来不必要的压力:

在这里插入图片描述

我们可以利用Spring的retry机制,在消费者出现异常时利用本地重试,而不是无限制的requeue到mq队列。

在这里插入图片描述

【牛逼!!】

试试

retry:
  enabled: true
  initial-interval: 1000
  multiplier: 3
  max-attempts: 4

在这里插入图片描述

修改一下监听

package cn.itcast.mq.listener;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class SpringRabbitListener {

    @RabbitListener(queues = "simple.queue")
    public void listenSimpleQueue(String msg) {
        log.debug("消费者接收到simple.queue的消息:【" + msg + "】");
        System.out.println(1 / 0);
        log.info("消费者处理消息成功!");
    }
}

OK, 直接启动服务,MQ 里的那条消息还在

在这里插入图片描述

牛逼牛逼,注意时间,间隔1秒,3秒,9秒,一共重试 4次

四次之后就直接抛了,这个消息就会被拒绝掉

看看控制台

在这里插入图片描述

消息已经无了,就算没有消费成功,因为重试次数没了,直接拒绝了【即丢弃消息】

这是Spring 重试默认的处理机制,但是这样就把消息丢了,好像也不太好,虽然没啥问题,不丢掉就会一直耗着

【除了丢弃,还有其他的策略吗?】【当然】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可路由计算引擎实现前置数据库

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主&#x1f3…

非零基础自学Golang 第9章 结构体 9.1 理解结构体 9.2 定义结构体 9.3 实例化结构体

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.1 理解结构体9.2 定义结构体9.3 实例化结构体9.3.1 标准实例化9.3.2 new函数实例化9.3.3 取地址实例化9.3.4 访问成员第9章 结构体 在Go语言官网的常见问题解答一栏中,有这样一个问题:“Is…

Fiddler(7):fiddler设置弱网测试

弱网测试 概念:弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。 意义:模拟在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。 Fiddler弱网测试流程: 一、限速操作…

基于云开发的微信小程序、QQ小程序详细教程(更新中)

云开发解决方案 小程序云开发解决方案 为企业和开发者提供一站式后端云服务,无需管理基础架构,一次开发多端运行,腾讯云和微信联合出品。 云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环…

数据结构---大整数相加

大整数相加列竖式运算第一步第二步第三步第四步JAVA实现给出两个很大的整数,要求实现程序求出两个整数之和。 记得这个题目我大二ACM课程老师讲过,但是忘记了。。。。。。。。。。 列竖式运算 程序不可能通过一条指令计算出两个大整数之和,…

【学习打卡04】可解释机器学习笔记之Grad-CAM

可解释机器学习笔记之Grad-CAM 文章目录可解释机器学习笔记之Grad-CAMGrad-CAM介绍Grad-CAM是CAM的泛化形式Gard-CAM可视化结果Grad-CAM算法的优点Grad-CAM算法的缺点Grad-CAM变种Grad-CAMScore-CAMLayer-CAM思考与总结参考阅读首先非常感谢同济子豪兄拍摄的可解释机器学习公开…

SAP S4 FICO 固定资产模块后台配置详解

1. 概述 资产会计(FI-AA)作为总帐模块(FI-GL)的子分类帐,对企业的固定资产、无形资产、在 建工程、低值易耗品、长期待摊、从购置、资本化、折旧、调拨到出售/报废的整个生命周期 进行全过程的管理,并和…

java实现给微信群中定时推送消息

大家好,我是雄雄。 前言 上一篇,我们介绍了如何通过调用接口的方式,将每日新闻发送到自己的博客中。我们会发现,将新闻以文章的形式发布,并且相关内容按照markdown的形式进行格式调整,有需要的可以点击这里…

获取小程序生产、开发、体验等环境、版本信息、appid等信息

if (typeof __wxConfig "object"){const version __wxConfig.envVersion;console.log("当前环境:" version)if (version "develop"){cosole.log(测试 开发环境)}else if (version "trial"){cosole.log(测试 体验版)}else if (versio…

【电力系统】基于YALMIP+CPLEX求解带储能的微电网优化调度问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【树莓派不吃灰】兄弟连篇② 文件编辑器vim与RPM软件包管理、yum

目录1、文件编辑器Vim1.1 工作模式1.2 插入命令1.3 定位命令1.4 删除命令1.5 复制和剪切命令1.6 替换和取消命令1.7 搜索和搜索替换命令1.8 保存和退出命令1.9 使用技巧2、yum包管理2.1 网络yum源2.2 yum命令2.3 rpm包与源码包安装位置❤️ 博客主页 单片机菜鸟哥,一…

联盛德W801开发板流水灯示例

联盛德W801开发板流水灯示例📺📽🎞🎬本实验通过利用开发板中间的7个led,控制对应的IO实现流水灯效果。 📜W801 32位WiFi蓝牙双模SoC开发板 🛠开发工具以及示例Demo工程 参考:《W801…

【数学模型】基于ARMR模型模拟风速附matlab完整代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

图计算的学习与思考

好的软件不是靠程序分析、查错查出来的,而是由正确的人构建出来的。图成为日益重要的运算对象,图结构是对群体关系的一种抽象,可以描述丰富的对象和关系。图计算的核心是如何将数据建模为图结构以及如何将问题的解法转化为图结构上的计算问题…

MySQL高级【存储引擎】

目录 1:Mysql体系结构图: 2:存储引擎简介 3:存储引擎特点 InnoDB存储引擎: MyISAM存储引擎: Memory存储引擎: 4:存储引擎选择 5:存储引擎小结 1:Mysq…

.net core 在arm linux 上运行

一、环境 开发板:OKMX6ULL 硬件:cortex A7 软件环境:Linux version 4.1.15-00041-g92e8c0f (zsdeveloper-RH2485-V2) (gcc version 5.3.0 (GCC) ) #1 SMP PREEMPT Mon May 24 17:20:23 CST 2021 .net core 版本: 二、问题 1…

网络攻防中的支持多种社交媒体的网络 go-fish 工具(包含智能探测、用户查找、权限提升等等),需谨慎使用,不然要被请去喝茶了

网络攻防中的支持多种社交媒体的网络 go-fish 工具(包含智能探测、用户查找、权限提升等等),需谨慎使用,不然要被请去喝茶了。 ShellPhish是一个可定制的网络 go-fish 工具,基于SocialFish。 支持以下社交平台: Instagram Facebook Twitter Snapchat Github Yahoo…

Linux学习笔记——Linux基础命令

02、Linux基础命令 2.1、Linux的目录结构 1、学习目标 掌握Linux系统的目录结构掌握Linux系统的路径表达式 2、Linux的目录结构是一个树型结构 Windows系统可以拥有多个盘符,如C盘、D盘、E盘 Linux没有盘符这个概念,只有一个根目录/,所有…

【大数据趋势】趋势在发生变化,稍安勿躁。

昔日(12月以前)行情核心源头 : 纳斯达克指数主连日线,趋势预测准确,继续筑底可能中 回顾一下上周大数据预测的趋势,指数用上引线方式神奇完成目标 【12.3趋势模拟情况】 预计:趋势不变情况下,预测反弹到黄金分割线…

基于预训练和对比学习的新意图发现

前言 从对话人的语句中发现新意图是一个研究方向 一般来说就是对句子通过聚类来解决这一问题,所以这里通常会涉及到两个问题: (1)怎么表征好一个句子 (2)怎么更好的聚类 今天就给大家介绍本篇~&…