209

インストールrabbitmqadminして、すべての交換とキューを一覧表示できました。すべてのキューを使用rabbitmqadminまたは削除するにはどうすればよいですか。rabbitmqctl

4

24 に答える 24

302

まず、キューを一覧表示します。

rabbitmqadmin list queues name

次に、リストから、それらを 1 つずつ手動で削除する必要があります。

rabbitmqadmin delete queue name='queuename'

出力形式のため、からの応答を grep できるようには見えませんlist queuesまたは、すべてをクリアする方法を探しているだけの場合(すべての設定をリセットして、インストールを既定の状態に戻す)、次を使用します。

rabbitmqctl stop_app
rabbitmqctl reset    # Be sure you really want to do this!
rabbitmqctl start_app
于 2012-07-12T20:19:39.183 に答える
9

キューが使用されておらず、リセットしたくないという理由でキューを削除しようとしている場合、1 つのオプションは、ポリシーを介してキューの TTL を非常に低く設定し、TTL が過ぎたらキューが自動削除されるのを待つことです。ポリシーを削除します ( https://www.rabbitmq.com/ttl.html )。

rabbitmqctl.bat set_policy delq ".*" '{"expires": 1}' --apply-to queues

ポリシーを削除するには

rabbitmqctl clear_policy delq

これは未使用のキューに対してのみ機能することに注意してください

元の情報はこちら: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html

于 2016-04-12T13:52:40.063 に答える
6

これを 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)
 }
于 2014-11-20T02:23:36.273 に答える
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"

渡す引数に対して異なるマッチングが必要な場合は、4 行目の grep を変更できます。すべてのキューを削除する場合、3 つの連続したスペースを含むキューは削除されません。これは、rabbitmqctl で出力を別の言語で出力するよりも、発生する可能性が低いと考えたためです。

楽しみ!

于 2013-09-13T12:06:34.287 に答える
4

以下のように rabbitmqctl eval を使用できます。

rabbitmqctl eval 'IfUnused = false, IfEmpty = true, MatchRegex = 
<<"^prefix-">>, [rabbit_amqqueue:delete(Q, IfUnused, IfEmpty) || Q <- 
rabbit_amqqueue:list(), re:run(element(4, element(2, Q)), MatchRegex) 
=/= nomatch ].' 

上記は、「prefix-」で始まる名前を持つすべての vhost 内のすべての空のキューを削除します。必要に応じて変数 IfUnused、IfEmpty、MatchRegex を編集できます。

于 2016-08-19T10:59:18.960 に答える
2

非永続キューを削除するために rabbitmq サーバーをリセットする必要はありません。サーバーを停止して再起動するだけで、使用可能なすべての非永続キューが削除されます。

于 2015-10-29T09:23:37.410 に答える
1

これは、@admenvaによる優れた回答を拡張した、より高速なバージョンです(parallelinstall sudo apt-get install parallel を使用)

parallel -j 50 rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -q delete queue name={} ::: $(rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -f tsv -q list queues name)

于 2015-03-15T15:45:00.493 に答える
0

スクリプトや完全なリセットなしで、すべてのキューと交換を削除する方法があります。管理インターフェイスから仮想ホストを削除して再作成するだけです。これは vhost でも機能し/ます。

復元する必要があるのは、新しく作成された仮想ホストのアクセス許可だけです。

于 2015-11-11T09:47:53.950 に答える
0

もう 1 つのオプションは、キューに関連付けられている vhost を削除することです。これにより、仮想ホストに関連付けられているすべてが削除されるため、注意が必要ですが、簡単で高速です.


注: RabbitMQ チームはメーリング リストを監視しておりrabbitmq-users StackOverflow に関する質問に回答する場合があります。

于 2018-12-22T16:22:09.777 に答える
-1
rabbitmqadmin list queues|awk 'NR>3{print $4}'|head -n-1|xargs -I qname rabbitmqadmin delete queue name=qname
于 2014-02-20T11:22:09.950 に答える