赞
踩
RocketMQ设计的思想是如果自动出现了死信队列的话,说明这个消息的消费是出了问题了,建议你手动去查询这些死信队列的消息,然后你要去针对性的去做处理.所以死信队列就是一个普通的队列, 你可以临时增加一些Consumer去订阅死信队列topic,然后消费死信队列的消息,就是人工补偿的机制.
当一条消息消费失败,RocketMQ就会自动进行消息重试。而如果消息超过最大重试次数,RocketMQ就会认为这个消息有问题。但是此时,RocketMQ不会立刻将这个有问题的消息丢弃,而会将其发送到这个消费者组对应的一种特殊队列:死信队列。
死信队列的名称是%DLQ%+ConsumGroup
通常,一条消息进入了死信队列,意味着消息在消费处理的过程中出现了比较严重的错误,并且无法自行恢复。此时,一般需要人工去查看死信队列中的消息,对错误原因进行排查。然后对死信消息进行处理,比如转发到正常的Topic重新进行消费,或者丢弃。
注:默认创建出来的死信队列,他里面的消息是无法读取的,在控制台和消费者中都无法读取。这是因为这些默认的死信队列,他们的权限perm被设置成了2:禁读(这个权限有三种 2:禁读,4:禁写,6:可读可写)。需要人工手动将死信队列的权限配置成6(可读可写权限),才能被消费(可以通过mqadmin指定或者web控制台)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。