求清空所有Vhost下RabbitMQ队列消息的PowerShell脚本
PowerShell脚本:清空所有RabbitMQ Vhost下的队列消息
以下是针对RabbitMQ 3.12.10版本的PowerShell脚本,仅清空所有Vhost下所有队列的消息,不会删除队列或Vhost:
# 若rabbitmqctl不在系统PATH中,需指定完整路径,例如: # $rabbitmqCtlPath = "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.12.10\sbin\rabbitmqctl.bat" $rabbitmqCtlPath = "rabbitmqctl" # 获取所有Vhost列表 $vhosts = & $rabbitmqCtlPath list_vhosts name --formatter=csv | Select-Object -Skip 1 | ForEach-Object { $_.Trim() } foreach ($vhost in $vhosts) { Write-Host "正在处理Vhost: $vhost" # 获取当前Vhost下的所有队列名称 $queues = & $rabbitmqCtlPath list_queues name -p $vhost --formatter=csv | Select-Object -Skip 1 | ForEach-Object { $_.Trim() } foreach ($queue in $queues) { Write-Host "清空队列: $queue (Vhost: $vhost)" & $rabbitmqCtlPath purge_queue $queue -p $vhost } } Write-Host "所有队列消息清空完成"
使用说明
- 路径配置:如果
rabbitmqctl不在系统环境变量PATH中,需要修改$rabbitmqCtlPath为你的RabbitMQ安装目录下sbin文件夹中的rabbitmqctl.bat(Windows)或rabbitmqctl(Linux/macOS)的完整路径。 - 权限要求:执行脚本的用户需要拥有RabbitMQ的管理员权限,能访问所有Vhost和队列。
- 确认操作:脚本执行前建议先在测试环境验证,避免误清空生产环境数据。
- 格式处理:使用
--formatter=csv是为了更稳定地解析输出,避免因默认格式的空格问题导致获取的Vhost或队列名称出错。
内容的提问来源于stack exchange,提问作者FluffyBike
相关产品推荐
相关产品推荐

