从RabbitMQ中删除所有队列?

Cor*_*ory 179 rabbitmq rabbitmqctl

我安装rabbitmqadmin并能够列出所有的交换和队列.我如何使用rabbitmqadminrabbitmqctl删除所有队列.

luk*_*fer 263

首先,列出你的队列:

rabbitmqadmin list queues name

然后从列表中,您需要逐个手动删除它们:

rabbitmqadmin delete queue name='queuename'

由于输出格式,没有出现你可以grep响应list queues.或者,如果您只是想要清除所有内容的方法(请参阅:重置所有设置,将安装恢复为默认状态),请使用:

rabbitmqctl stop_app
rabbitmqctl reset    # Be sure you really want to do this!
rabbitmqctl start_app
Run Code Online (Sandbox Code Playgroud)

  • 只是抓住空的队列.`rabbitmqctl list_queues | grep 0 | awk'{print $ 1}'| xargs -I qn rabbitmqadmin delete queue name = qn` (24认同)
  • 在rabbitmq中查看所有挂起的任务:`rabbitmqctl list_queues name messages messages_ready\messages_unacknowledged` (4认同)
  • @au_stan这将删除名称或计数中包含0的所有队列.可能想做'grep $'\ t0'`或者别的什么. (4认同)
  • 请注意,“rabbitmqctl reset”会将*所有内容*重置为“出厂设置”。您创建的任何 RabbitMQ 用户、虚拟主机等都会被吹走。 (2认同)

adm*_*nva 48

有了rabbitmqadmin你可以用这一个班轮将其删除:

rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Run Code Online (Sandbox Code Playgroud)

  • 您可能必须使用 -H 指定主机,使用 -u 和 -p 参数指定连接到服务器的凭据 (3认同)

Mes*_* A. 33

实际上管理插件和政策非常简单:

  • 转到管理控制台(localhost:15672)

  • 转到" 管理"选项卡

  • 转到政策选项卡(在右侧)

  • 添加政策

  • 填充字段

    • 虚拟主机:选择
    • 名称:所有政策到期(稍后删除)
    • 图案:.*
    • 适用于:队列
    • 定义: expires值为1(将类型从String更改为Number)
  • 保存

  • 再次结帐队列标签
  • 必须删除所有队列
  • 不要忘记删除政策!!!!!! .

  • 在定义中选择“数字”。不适用于默认值(“字符串”) (3认同)
  • 我怎样才能一次删除所有的交换? (3认同)

Gat*_*ole 19

试试这个:

 rabbitmqadmin list queues name | awk '{print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但是也显示了“ ***找不到:/ api / queues /%2F / name”,因为输出是带有“名称”列的ASCII表。我将命令调整为```rabbitmqadmin list queue name | awk'!/-| name / {print $ 2}'| xargs -I qn rabbitmqadmin删除队列名称= qn`进行修复。 (2认同)

小智 15

在 Rabbit 3.7.10 版本中,您可以使用 root 权限运行以下命令:

rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl delete_queue
Run Code Online (Sandbox Code Playgroud)


Ana*_*lev 8

如果您没有安装rabbitmqadmin,请尝试使用rabbitmqctl清除队列:

rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue


Dan*_*Dan 6

我创建了一个deleteRabbitMqQs.sh,它接受搜索队列列表的参数,只选择与你想要的模式匹配的参数.如果你不提供任何参数,它将全部删除它们!它会显示要删除的队列列表,让您在执行任何破坏性操作之前退出.

for word in "$@"
do
        args=true
        newQueues=$(rabbitmqctl list_queues name | grep "$word")
        queues="$queues
$newQueues"
done
if [ $# -eq 0 ]; then
        queues=$(rabbitmqctl list_queues name | grep -v "\.\.\.")
fi

queues=$(echo "$queues" | sed '/^[[:space:]]*$/d')

if [ "x$queues" == "x" ]; then
        echo "No queues to delete, giving up."
        exit 0
fi

read -p "Deleting the following queues:
${queues}
[CTRL+C quit | ENTER proceed]
"

while read -r line; do
        rabbitmqadmin delete queue name="$line"
done <<< "$queues"
Run Code Online (Sandbox Code Playgroud)

如果要对传入的参数进行不同的匹配,可以在第4行中更改grep.当删除所有队列时,它不会删除其中有三个连续空格的队列,因为我认为可能性比使用rabbitmqctl以不同语言打印输出的人更少.

请享用!


use*_*836 6

如果您尝试删除队列,因为它们未被使用且您不想重置,一个选项是通过策略将队列TTL设置得非常低,等待TTL通过后自动删除队列然后删除该策略(https://www.rabbitmq.com/ttl.html).

rabbitmqctl.bat set_policy delq ".*" '{"expires": 1}' --apply-to queues
Run Code Online (Sandbox Code Playgroud)

删除该政策

rabbitmqctl clear_policy delq
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于未使用的队列

原始信息:http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html


klu*_*msy 5

这是使用PowerShell执行此操作的一种方法.URL可能需要更新

$cred = Get-Credential
 iwr -ContentType 'application/json' -Method Get -Credential $cred   'http://localhost:15672/api/queues' | % { 
    ConvertFrom-Json  $_.Content } | % { $_ } | ? { $_.messages -gt 0} | % {
    iwr  -method DELETE -Credential $cred  -uri  $("http://localhost:15672/api/queues/{0}/{1}" -f  [System.Web.HttpUtility]::UrlEncode($_.vhost),  $_.name)
 }
Run Code Online (Sandbox Code Playgroud)