刪除rocketmq堆積消息和topic等
1. 停止 rocketmq:
優雅方法: 終端下 sh /mq安裝目錄/rocketmq-4.7.0/bin/mqshutdown broker
粗暴方法: kill -9 幹掉所有broker就好
2. 查看mq配置文件, 瞭解mq日誌路徑
cat /mq安裝目錄/rocketmq-4.7.0/conf/broker.conf
或者
cat /mq安裝目錄/rocketmq-4.7.0/conf/2m-2s-async/broker-a.properties
關注裏面的storePathRootDir, storePathCommitLog字段配置的日誌路徑
2. 根據日誌路徑, 刪除mq日誌
rm -rf /mq安裝目錄/rocketmq-4.7.0/logs/*
3. 根據日誌路徑, 刪除MQ堆積topic等信息
rm -rf /mq安裝目錄/rocketmq-4.7.0/store/*
理論上到這裏已經順利清空rocketmq堆積消息和topic等, 只要重啓mq即可
4. 重啓MQ
sh /mq安裝目錄/rocketmq-4.7.0/bin/mqbroker -c /mq安裝目錄/rocketmq-4.7.0/conf/2m-2s-async/broker-m.properties
5. [可選] 清空MQ裏顯示的topic
經過上一步後, 消息已經全部刪除了, 雖然這裏還是可以查詢得了, 但是業務系統在收發消息時會報錯, 需要手工新建topic和消費者才行, 所以爲了避免干擾, 建議把顯示的實際被刪掉 的消息也清理掉
如果安裝了RocketMQ-Console, 可以在前端頁面上操作刪除topic, 否則也可以下面命令
查詢所有topic sh /mq安裝目錄/rocketmq-4.7.0/bin/mqadmin topicList -n 127.0.0.1:9876
刪除實際被刪Topic sh /mq安裝目錄/rocketmq-4.7.0/bin/mqadmin deleteTopic -c HOSTNAME -n 127.0.0.1:9876 -t topic123
注意事項:
1. 先停掉rocketmq和清空順序很關鍵;如果沒有都清楚,rocketmq不知道從哪裏還會把所有積攢的再加載回來,導致還是無法啓動rocketmq
2. deleteTopic不是必須的,但是刪除的時候一般都需要制定 -c,可以用hostname試試
參考: 如何清空rocketmq消息(包括堆積消息) - tantexian的博客空間 - OSCHINA
https://my.oschina.net/tantexian/blog/703785