17.RocketMQ之死信队列

RocketMQ在消息初次消费失败后会自动重试,超过最大重试次数则将消息放入死信队列。死信消息不会被正常消费,有效期3天,需及时处理。消费者可通过订阅死信队列进行特殊处理,或者设置自定义的重试策略。

highlight: arduino-light

1.5 死信队列

当一条消息初次消费失败,消息队列 RocketMQ 会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列 RocketMQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。对应的源码如下:

java public class SendMessageProcessor extends AbstractSendMessageProcessor implements NettyRequestProcessor { ​    public static final String RETRY_GROUP_TOPIC_PREFIX = "%RETRY%";    public static final String DLQ_GROUP_TOPIC_PREFIX = "%DLQ%"; ​    private boolean handleRetryAndDLQ(SendMessageRequestHeader requestHeader, RemotingCommand response,                                      RemotingCommand request,                                      MessageExt msg, TopicConfig topicConfig) {        // 获取topic进行判断逻辑        String newTopic = requestHeader.getTopic();        // 重试队列:%RETRY%+consumerGroup        // 如果是重试队列才会进入判断        if (null != newTopic && newTopic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)) {            //获取消费者组            String groupName = newTopic.substring(MixAll.RETRY_GROUP_TOPIC_PREFIX.length());            SubscriptionGroupConfig subscriptionGroupConfig =                this.brokerController.getSubscriptionG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值