目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7094.5k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(528)
赞(0)

消息重试

Consumer消费消息失败后,要提供一种重试机制,使消息再消费一次。Consumer消费消息失败通常可以认为有以下几种情况:

  • 由于消息本身的原因,例如反序列化失败,消息数据本身无法处理(例如话费充值,当前消息的手机号被注销,无法充值)等。这种错误通常需要跳过这条消息,再消费其它消息,而这条失败的消息即使立刻重试消费,99%也不成功,所以最好提供一种定时重试机制,即过10秒后再重试。
  • 由于依赖的下游应用服务不可用,例如db连接不可用,外系统网络不可达等。遇到这种错误,即使跳过当前失败的消息,消费其他消息同样也会报错。这种情况建议应用sleep 30s,再消费下一条消息,这样可以减轻Broker重试消息的压力。

消息队列RocketMQ消息收发过程中,若Consumer消费某条消息失败,则消息队列RocketMQ会在重试间隔时间后,将消息重新投递给Consumer消费,若达到最大重试次数后消息还没有成功被消费,则消息将被投递至死信队列。

重试间隔:消息消费失败后再次被消息队列RocketMQ投递给Consumer消费的间隔时间。

最大重试次数:消息消费失败后,可被消息队列RocketMQ重复投递的最大次数。

在RocketMQ中,顺序消息和无序消息(包括普通消息、延时消息、定时消息和事务消息)的重试机制如下:

协议消息类型重试间隔最大重试次数配置方式
TCP协议顺序消息间隔时间可通过自定义参数suspendTimeMillis取值进行配置。参数取值范围:10~30000,单位:毫秒,默认值:1000毫秒,即1秒。最大重试次数可通过自定义参数MaxReconsumeTimes取值进行配置。该参数取值无最大限制。若未设置参数值,默认最大重试次数为Integer.MAX请参见配置方式(TCP协议)。
TCP协议无序消息间隔时间根据重试次数阶梯变化,取值范围:1秒~2小时。不支持自定义配置。若最大重试次数小于等于16次,则每次重试的间隔时间会阶梯变化,具体时间,请参见无序消息重试间隔。若最大重试次数大于16次,则超过16次的间隔时间均为2小时。最大重试次数可通过自定义参数MaxReconsumeTimes取值进行配置。默认值为16次,该参数取值无最大限制,建议使用默认值。 
HTTP协议顺序消息1分钟288次系统预设,不支持修改。
HTTP协议无序消息5分钟288次系统预设,不支持修改。

TCP协议无序消息重试时间间隔:

第几次重试与上次重试的间隔时间第几次重试与上次重试的间隔时间
110秒97分钟
230秒108分钟
31分钟119分钟
42分钟1210分钟
53分钟1320分钟
64分钟1430分钟
75分钟151小时
86分钟162小时

实时效果反馈

1.下列不属于消息重试的配置方式是哪个?

A CONSUME_SUCCESS

B RECONSUME_LATER

C null

D throw new Exception("Consumer Message exceotion")

答案

1=>A

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2