Saya menginstal rabbitmqadmin
dan dapat mendaftar semua pertukaran dan antrian. Bagaimana saya bisa menggunakan rabbitmqadmin
atau rabbitmqctl
menghapus semua antrian.
rabbitmq
rabbitmqctl
Cory
sumber
sumber
rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged
rabbitmqctl list_queues | grep 0 | awk '{print $1}' | xargs -I qn rabbitmqadmin delete queue name=qn
grep $'\t0'
atau sesuatu.Dengan
rabbitmqadmin
Anda dapat menghapusnya dengan liner satu ini:sumber
egrep
, jadi perintah saya akan terlihat seperti ini:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Sebenarnya sangat mudah dengan plugin dan kebijakan manajemen :
Konsol Manajemen Goto (localhost: 15672)
Tab Admin Goto
Tab Kebijakan Goto (di sebelah kanan)
Tambahkan Kebijakan
Isi Fields
Menyimpan
sumber
Coba ini:
sumber
*** Not found: /api/queues/%2F/name
karena outputnya adalah tabel ASCII dengan kolom "nama". Saya mengubah perintahrabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
untuk memperbaikinya.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Jika Anda belum menginstal rabbitmqadmin, coba bersihkan antrian dengan rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
sumber
delete_queue
ataupurge_queue
perintah dirabbitmqctl
. Saya ingin membersihkan banyak antrian yang tampaknya dibuat secara otomatis dan saya tidak ingin menginstal perangkat lunak tambahan sepertirabbitmqadmin
...rabbitmqctl purge_queue
bekerja di sini secara manual. Saya hanya perlu menambahkan -p <virtual-host>delete_queue
danpurge_queue
tersedia dalamrabbitmqctl
dan saya baru saja menjalankan mereka berhasil. Mungkin Anda menggunakan versi lama.Jika Anda mencoba untuk menghapus antrian karena tidak digunakan dan Anda tidak ingin mengatur ulang, salah satu opsi adalah mengatur antrian TTL sangat rendah melalui kebijakan, tunggu antrian dihapus secara otomatis setelah TTL disahkan dan kemudian hapus kebijakan ( https://www.rabbitmq.com/ttl.html ).
Untuk menghapus kebijakan
Perhatikan bahwa ini hanya berfungsi untuk antrian yang tidak digunakan
Info asli di sini: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
sumber
Saya membuat deleteRabbitMqQs.sh, yang menerima argumen untuk mencari daftar antrian, memilih hanya yang cocok dengan pola yang Anda inginkan. Jika Anda tidak menawarkan argumen, itu akan menghapus semuanya! Ini menunjukkan kepada Anda daftar antrian yang akan dihapus, membiarkan Anda berhenti sebelum melakukan sesuatu yang merusak.
Jika Anda ingin pencocokan yang berbeda dengan argumen yang Anda berikan, Anda dapat mengubah grep di baris empat. Ketika menghapus semua antrian, itu tidak akan menghapus yang dengan tiga spasi berturut-turut di dalamnya, karena saya pikir kemungkinan akan lebih jarang daripada orang-orang yang rabbitmqctl mencetak hasilnya dalam bahasa yang berbeda.
Nikmati!
sumber
Di Rabbit versi 3.7.10 Anda dapat menjalankan perintah di bawah ini dengan izin root:
sumber
Ini cara untuk melakukannya dengan PowerShell. URL mungkin perlu diperbarui
sumber
Anda dapat menggunakan eval rabbitmqctl seperti di bawah ini:
Di atas akan menghapus semua antrian kosong di semua vhosts yang memiliki nama yang diawali dengan "awalan-". Anda dapat mengedit variabel IfUnused, IfEmpty, dan MatchRegex sesuai kebutuhan Anda.
sumber
rabbitmqadmin
tidak dapat diakses.Menghapus semua antrian menggunakan rabbitmqctl one liner
sumber
Jika Anda hanya ingin membersihkan antrian yang tidak kosong (jauh lebih cepat):
Bagi saya, dibutuhkan 2-3 detik untuk membersihkan antrian (baik yang kosong maupun yang tidak kosong), jadi iterasi melalui 50 antrian adalah hal yang menyakitkan, sementara saya hanya perlu membersihkan 10 dari antrian (40/50 kosong).
sumber
Saya mencoba rabbitmqctl dan mengatur ulang perintah tetapi sangat lambat.
Ini adalah cara tercepat yang saya temukan (ganti nama pengguna dan kata sandi Anda):
Catatan: Ini hanya berfungsi dengan vhost default /
sumber
Untuk membuat daftar antrian,
Untuk menghapus antrian,
sumber
Ini adalah versi yang lebih cepat (menggunakan
parallel
install sudo apt-get install parallel) memperluas jawaban yang sangat baik oleh @admenvaparallel -j 50 rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -q delete queue name={} ::: $(rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -f tsv -q list queues name)
sumber
Perintah ini menghapus semua antrian Anda
Skrip ini sangat sederhana karena digunakan
-f bash
, yang menampilkan antrian sebagai daftar.Kemudian kita gunakan
xargs -n1
untuk membaginya menjadi beberapa variabelKemudian kita gunakan
xargs -I{}
yang akan menjalankan perintah berikut, dan ganti{}
di perintah.sumber
http://yourhost:15672/cli/
dan mengunduhnya.Anda tidak perlu mereset server rabbitmq untuk menghapus antrian yang tidak tahan lama . Cukup hentikan server dan mulai lagi dan itu akan menghapus semua antrian tidak tahan lama yang tersedia.
sumber
Untuk yang memiliki masalah dengan menginstal rabbitmqadmin, Anda harus menginstal python terlebih dahulu.
Pengguna sistem operasi mirip UNIX perlu menyalin rabbitmqadmin ke direktori di PATH, mis. / Usr / local / bin.
Pengguna Windows perlu memastikan Python ada di PATH mereka, dan memanggil rabbitmqadmin sebagai python.exe rabbitmqadmin.
Kemudian
http://{hostname}:15672/cli/rabbitmqadmin
untuk mengunduh.Untuk daftar Antrian
python rabbitmqadmin list queues
.Untuk menghapus Antrian
python rabbitmqadmin delete queue name=Name_of_queue
Untuk Menghapus semua Antrian
1- Menyatakan Kebijakan
2- Hapus kebijakan
sumber
Ada cara untuk menghapus semua antrian dan pertukaran tanpa skrip dan set lengkap. Anda bisa menghapus dan membuat kembali host virtual dari antarmuka admin. Ini akan berfungsi bahkan untuk vhost
/
.Satu-satunya hal yang perlu Anda pulihkan adalah izin untuk vhost yang baru dibuat.
sumber
Oke, kualifikasi penting untuk jawaban ini: Pertanyaannya tidak meminta untuk menggunakan rabbitmqctl ATAU rabbitmqadmin untuk menyelesaikan ini, jawaban saya perlu menggunakan keduanya. Juga, perhatikan bahwa ini diuji pada MacOS 10.12.6 dan versi rabbitmqctl dan rabbitmqadmin yang diinstal ketika menginstal rabbitmq dengan Homebrew dan yang diidentifikasi
brew list --versions
sebagai rabbitmq 3.7.0rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
sumber
Pilihan lain adalah menghapus vhost yang terkait dengan antrian. Ini akan menghapus semua yang terkait dengan vhost, jadi berhati-hatilah, tetapi mudah dan cepat.
CATATAN: tim RabbitMQ memonitor para
rabbitmq-users
mailing list dan hanya kadang-kadang menjawab pertanyaan pada StackOverflow.sumber
Saya mencoba potongan-potongan kode di atas tetapi saya tidak melakukan streaming.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Saya menghasilkan file yang berisi semua nama antrian dan loop melalui baris demi baris untuk menghapusnya. Untuk loop,
while read ...
tidak melakukannya untukku. Itu selalu berhenti di nama antrian pertama.sumber
sumber