RabbitMQ CLI获取消息报错:使用rabbitmqadmin时提示[{key_missing,ackmode}]
解决RabbitMQ 3.7.2中rabbitmqadmin get命令的
key_missing,ackmode错误 这个报错其实是因为RabbitMQ 3.7.x版本开始,rabbitmqadmin的get命令行为有了变化——必须显式指定ackmode参数,而你之前使用的requeue参数已经被这个新参数替代了,这就是为什么之前能正常运行的命令现在失效了。
快速修复命令
把原来的requeue=false替换为对应的ackmode参数即可,对应你需求的正确命令是:
rabbitmqadmin --host rabbitmq get queue=test ackmode=ack_requeue_false
详细解释与排查思路
1. 理解ackmode参数的可选值
ackmode用来控制获取消息后的处理逻辑,对应你常用的requeue行为:
ack_requeue_false:获取消息后直接移除,不再重新入队(完全等价于你之前的requeue=false)ack_requeue_true:获取消息后如果未手动确认,会重新放回队列(等价于requeue=true)no_ack:无需确认操作,直接移除消息
2. 排查工具版本兼容性
如果替换参数后还是报错,检查你的rabbitmqadmin脚本版本:
rabbitmqadmin --version
如果版本和RabbitMQ服务器(3.7.2)不一致,建议从当前RabbitMQ管理后台的http://[你的RabbitMQ地址]:15672/cli/下载对应版本的rabbitmqadmin脚本,替换本地的旧版本,避免因版本不匹配导致的参数兼容问题。
3. 确认队列与权限
- 先用以下命令确认
test队列存在:rabbitmqadmin list queues name - 同时确保执行命令的用户拥有该队列的
read权限,避免因权限问题引发的隐性错误。
内容的提问来源于stack exchange,提问作者aitorhh
相关产品推荐
相关产品推荐

