博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rocketmq的重试队列和死信队列
阅读量:3553 次
发布时间:2019-05-20

本文共 1062 字,大约阅读时间需要 3 分钟。

原文:https://www.jianshu.com/p/1281f7fee69c

消费端,一直不回传 消费的结果。rocketmq认为消息没收到,consumer下一次拉取,broker依然会发送该消息。

所以,任何异常都要捕获返回ConsumeConcurrentlyStatus.RECONSUME_LATER

rocketmq会放到重试队列。

这个重试TOPIC的名字是

%RETRY%+consumergroup的名字

在控制台上过一会就可以查到。

重试的消息在延迟的某个时间点(默认是10秒,业务可设置)后,再次投递到这个ConsumerGroup。而如果一直这样重复消费都持续失败到一定次数(默认16次),就会投递到DLQ死信队列,此时需要人工干预了。

/**

  • Batch consumption size

*/

private int consumeMessageBatchMaxSize = 1;

/**

  • Batch pull size

*/

private int pullBatchSize = 32;

consumeMessageBatchMaxSize 是批量消费的最大条数

pullBatchSize 是每次拉取的最大条数

在broker端的

private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";

参数是设置重试的时间,即第一次1s之后,第二次5s之后

为了测试,改成5s,生产环境不要改

messageDelayLevel = 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s 5s

16次之后,多了一个topic

名为

%DLQ%+consumergroup

死信队列.png

这个默认的16次,可以改。但是使用DefaultMQPullConsumer才可以修改。

DefaultMQPushConsumer不能修改此值。

顺便再说下,consumeMessageBatchMaxSize 这个size是消费者注册的回调listener一次处理的消息数,默认是1.不是每次拉取的消息数(默认是32),这个不要搞混。

作者:云胜886
链接:https://www.jianshu.com/p/1281f7fee69c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你可能感兴趣的文章
如何设计一个秒杀系统 -- 动静分离方案
查看>>
JWT 快速了解
查看>>
实习日志一
查看>>
Springboot读取自定义配置文件的几种方法
查看>>
ZigbeeCC2530 --(裸机和协议栈)串口时钟配置
查看>>
ZigBee开发环境搭建 ----IAR for 8051与SmartRFProgram等软件安装使用
查看>>
Python ---太空射击游戏
查看>>
C/C++之struct的小知识
查看>>
温湿度传感器(AM2312)
查看>>
SpringBoot应用整合ELK实现日志收集
查看>>
使用Jenkins一键打包部署SpringBoot应用---docker版本
查看>>
MacOS开启SSH服务
查看>>
集成druid实现数据库密码加密功能
查看>>
mac开启ssh
查看>>
ELK环境安装和简介
查看>>
Maven
查看>>
myeclipse,eclipse,idea配置和快捷键
查看>>
idea配置
查看>>
centos7如何安装svn的服务端
查看>>
linux虚拟机修改ip
查看>>