RocketMQ――死信

匿名 (未验证) 提交于 2019-12-03 00:37:01

在上篇博客中我们了解了RocketMQ的ACK机制,其中涉及到了消息消费重试,当重试次数达到默认的16次后(可以通过配置文件修改)如果对应的消息还没被成功消费的话,该消息就会投递到DLQ死信队列。



不过,在使用控制台查询死信消息队列的时候会报错,具体如下图

org.apache.rocketmq.client.exception.MQClientException: Can not find Message Queue for this topic, %DLQ%consumer1 See http://rocketmq.apache.org/docs/faq/ for further details.


对应服务器进入相关的目录下,/usr/local/rocketmq/store/consumequeue,发现确实是存在%DLQ%consumer1


我们通过进入到,通过rocketmq的管理命令(先进入/usr/local/rocketmq/bin)查看所有的topic,发现也确实能够找到

sh mqadmin  topicList -n 192.168.140.129:9876;192.168.140.128:9876


查看该topic信息,发现perm为2

sh mqadmin  topicRoute -n 192.168.140.129:9876 -t %DLQ%consumer1


修改topic的perm为6(两台机器都要执行)

在128机器上执行如下命令:

 sh mqadmin  updateTopic -b 192.168.159.129:10911 -n 192.168.159.129:9876 -t %DLQ%consumer1 -p 6

129机器上执行如下命令:

 sh mqadmin  updateTopic -b 192.168.159.128:10911 -n 192.168.159.128:9876 -t %DLQ%consumer1 -p 6


查看控制台死信队列



文章来源: RocketMQ――死信
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!