রাবিটএমকিউ থেকে সমস্ত সারি মুছবেন?


188

আমি ইনস্টল করেছিলাম rabbitmqadminএবং সমস্ত এক্সচেঞ্জ এবং সারি তালিকাবদ্ধ করতে সক্ষম হয়েছি। আমি কীভাবে ব্যবহার করতে পারি rabbitmqadminবা rabbitmqctlসমস্ত সারি মুছে ফেলতে পারি ।

উত্তর:


272

প্রথমে আপনার সারিগুলি তালিকাভুক্ত করুন:

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

4
খরগোশের সমস্ত বিচারাধীন কাজগুলি দেখতে:rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged
ভিনসেন্ট

2
সচেতন থাকুন যে "রাবিটম্যাক্টিটেল রিসেট" সবকিছু "ফ্যাক্টরি সেটিংস" এ পুনরায় সেট করবে । আপনার তৈরি করা কোনও রবিটএমকিউ ব্যবহারকারী, ভার্চুয়াল হোস্ট ইত্যাদি প্রস্ফুটিত হবে।
thyfek

দুঃখিত @ স্মার্টনাট 700, আমি দাবিত্যাগের মাধ্যমে উত্তরের দ্বিতীয় অংশটি পরিষ্কার করেছি।
lukiffer

24
খালি কাতারে ধরছি। rabbitmqctl list_queues | grep 0 | awk '{print $1}' | xargs -I qn rabbitmqadmin delete queue name=qn
অউস্তান

4
@ অ_স্তান নাম বা গণনাতে 0 দিয়ে সমস্ত সারি মুছে ফেলবে। grep $'\t0'কিছু করতে চান বা কিছু করতে পারেন।
woot

51

সঙ্গে rabbitmqadminতুমি তাদের এই এক মাছ ধরার নৌকা সঙ্গে অপসারণ করতে পারেন:

rabbitmqadmin -f tsv -q list queues name | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done

আমার ক্ষেত্রে সারিগুলি কীওয়ার্ডের সাথে পূর্বনির্ধারিত হয় যা আমি সহজেই ব্যবহার করতে পারি egrep, সুতরাং আমার কমান্ডটি এর মতো দেখাবে:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
লোগানস

47

ম্যানেজমেন্ট প্লাগইন এবং নীতিগুলি সহ আসলেই সুপার ইজি :

  • গোটো ম্যানেজমেন্ট কনসোল (লোকালহোস্ট: 15672)

  • যান প্রশাসনের ট্যাব

  • গোটো পলিসি ট্যাব (ডানদিকে)

  • যোগ নীতি

  • ক্ষেত্রগুলি পূরণ করুন

    • ভার্চুয়াল হোস্ট: নির্বাচন করুন
    • নাম: সমস্ত নীতি মেয়াদ শেষ (পরে মুছুন)
    • প্যাটার্ন:। *
    • প্রয়োগ করুন: সারি
    • সংজ্ঞা: মান 1 দিয়ে শেষ হয় (স্ট্রিং থেকে সংখ্যাতে প্রকারের পরিবর্তন)
  • সংরক্ষণ

  • চেকআউট ক্যু ট্যাব আবার
  • সমস্ত ক্যু মুছে ফেলা আবশ্যক
  • এবং ভুলবেন না নীতি সরান !!!!!!

1
সংজ্ঞাতে "সংখ্যা" নির্বাচন করুন। ডিফল্ট ("স্ট্রিং") দিয়ে কাজ করে না
ম্যাথিয়াস

দুর্দান্ত উত্তর, আসলে আমার দিনটি তৈরি। আপনি যদি তালিকা থেকে "এক্সচেঞ্জ এবং কুইউস" নির্বাচন করেন, আপনি সহজেই উভয় ক্যু এবং এক্সচেঞ্জ মুছতে পারেন। আমি আশা করি এটি গ্রহণযোগ্য উত্তর হতে পারে।
উইক্টর জাইখলা

দৃষ্টান্ত এসএসএইচ-এর চারপাশে খেলতে না পারা খুব পরিষ্কার সমাধান।
অ্যাসিডবার্ন 23

করুণা কেউ ম্যানেজমেন্ট প্লাগইন এবং নীতিগুলি কীভাবে ইনস্টল করবেন তা ব্যাখ্যা করেন না
জেলনিড

@MesutA। অনেক ধন্যবাদ. আমি মনে করি এই নিবন্ধটি এই লিঙ্কে রাখা ভাল। এটির উত্তরে যুক্ত করা আরও ভাল হতে পারে, কারণ মন্তব্যগুলি শুদ্ধ হতে পারে। তবে আমার কাছে এখন কমপক্ষে এই তথ্য আছে
জেলনিডা

19

এটা চেষ্টা কর:

 rabbitmqadmin list queues name | awk '{print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn

2
এটি আমার পক্ষে কাজ করেছে, তবে এটিও দেখিয়েছে *** Not found: /api/queues/%2F/nameকারণ আউটপুটটি "নাম" কলাম সহ একটি ASCII টেবিল। rabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qnএটি ঠিক করার জন্য আমি কমান্ডটি টুইট করি।
মার্ক এডিংটন

rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
স্কট লিওনার্ড

9

আপনার যদি খরগোশমেকডমিন ইনস্টল না থাকে তবে খরগোশমেক্টিটল দিয়ে সারিগুলি সাফ করার চেষ্টা করুন:

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


এর মধ্যে নেই delete_queueবা purge_queueআদেশও নেই rabbitmqctl। আমি অনেকগুলি সারি মুছে ফেলতে চাই যা দেখে মনে হচ্ছে স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছে এবং আমি অতিরিক্ত সফ্টওয়্যার ইনস্টল করতে চাই না rabbitmqadmin...
রোলিস

rabbitmqctl purge_queueম্যানুয়ালি এখানে কাজ। আমার কেবলমাত্র -p <ভার্চুয়াল-হোস্ট>
রোমান সুসি

কি @Rolice উপরে বর্ণিত, উভয় বিপক্ষে delete_queueএবং purge_queueপাওয়া যায় rabbitmqctlএবং আমি তাদের সাফল্যের সাথে সম্পন্ন করেছি। সম্ভবত আপনি একটি পুরানো সংস্করণে আছেন।
রিচার্ড ডান

শুনে ভাল লাগল, এগুলি সম্প্রতি যুক্ত করা যেত।
রোলিস

6

আমি একটি মুছে ফেলা র‌্যাবিট এমকিউএস.এস তৈরি করেছি, যা আপনার পছন্দসই প্যাটার্নের সাথে মেলে এমন একটিকে বেছে নিয়ে এর জন্য সারিগুলির তালিকা অনুসন্ধান করার জন্য আর্গুমেন্ট গ্রহণ করে। আপনি যদি কোনও যুক্তি না দিয়ে থাকেন তবে এটি সমস্ত মুছে ফেলবে! এটি আপনাকে মুছে ফেলতে থাকা সারিগুলির তালিকা প্রদর্শন করে, ধ্বংসাত্মক কিছু করার আগে আপনাকে ছাড়তে দেয়।

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"

আপনি যে আর্গুমেন্টগুলি দিয়ে যাচ্ছেন তার বিপরীতে যদি আপনি বিভিন্ন মিল চান তবে আপনি গ্রাইপটিকে লাইন চারে পরিবর্তন করতে পারেন। সমস্ত সারি মুছে ফেলার সময়, এটিতে টানা তিনটি ফাঁকা স্থান থাকা মুছে ফেলা হবে না, কারণ আমি বুঝতে পেরেছিলাম যে ব্যক্তিরা বিভিন্ন ভাষায় খরগোশ ছাপিয়ে রেবিটম্যাক্টল করেছেন তাদের তুলনায় ঘটনাটি বিরল হবে।

উপভোগ করুন!


6

আপনি যদি সারিগুলি অপব্যবহারের কারণে মুছে ফেলার চেষ্টা করছেন এবং আপনি পুনরায় সেট করতে চান না, তবে একটি বিকল্প হ'ল একটি নীতিমালার মাধ্যমে কাতারে টিটিএল খুব কম সেট করা হবে, টিটিএল পাস হওয়ার পরে কাতগুলি স্বয়ংক্রিয়ভাবে মোছার অপেক্ষা করুন wait এবং তারপরে নীতিটি মুছে ফেলুন ( 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


6

খরগোশের সংস্করণ ৩.7.১০ এ আপনি রুট অনুমতি নিয়ে কমান্ডের নীচে চলতে পারেন:

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

5

পাওয়ারশেল দিয়ে এটি করার একটি উপায় এখানে। ইউআরএল আপডেট করার প্রয়োজন হতে পারে

$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)
 }

দ্রষ্টব্য, এটি কেবল খালি খালি সারিগুলি মুছে দেয়। সমস্ত সারি মুছে ফেলতে -gt ধারাটি সরিয়ে ফেলুন
পিটার গুডম্যান

4

আপনি নীচে হিসাবে খরগোশক্টাক্টল ইয়াল ব্যবহার করতে পারেন:

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 ].' 

উপরের সমস্ত vhosts এর সমস্ত শূন্য সারি মুছে ফেলবে যেটির নাম "উপসর্গ-" দিয়ে শুরু হবে। আপনি আপনার প্রয়োজন অনুসারে যদি ব্যবহারযোগ্য, ifEmpty এবং MatchRegex পরিবর্তনগুলি সম্পাদনা করতে পারেন।


যখন rabbitmqadminঅ্যাক্সেসযোগ্য না হয় তার জন্য উপযুক্ত।
নিউস্কুলার

আমি এই অনেক দ্রুত list_queues চেয়ে পাওয়া
TerrenceSun

3

এক খরচে খরগোশ mctctl ব্যবহার করে সমস্ত সারি সরিয়ে ফেলা হচ্ছে

rabbitmqctl list_queues | awk '{ print $1 }' | sed 's/Listing//' | xargs -L1 rabbitmqctl purge_queue

2

আপনি যদি কেবল খালি নয় (খুব দ্রুত) সারিগুলি মুছে ফেলতে চান তবে:

rabbitmqctl list_queues | awk '$2!=0 { print $1 }' | sed 's/Listing//' | xargs -L1 rabbitmqctl purge_queue

আমার জন্য, একটি সারি মুছে ফেলতে 2-3 সেকেন্ড সময় লাগে (উভয় শূন্য এবং খালি নয়), সুতরাং 50 টি সারির মধ্য দিয়ে পুনরাবৃত্তি করা যেমন একটি ব্যথা হয় যখন আমি কেবল তাদের 10 টি মুছে ফেলতে পারি (40/50 খালি)।


2

আমি খরগোশমেক্টিটেল এবং পুনর্নির্দেশ আদেশগুলি চেষ্টা করেছি কিন্তু সেগুলি খুব ধীর।

এটি আমি খুঁজে পাওয়া সবচেয়ে দ্রুততম উপায় (আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রতিস্থাপন করুন):

#!/bin/bash

# Stop on error
set -eo pipefail

USER='guest'
PASSWORD='guest'

curl -sSL -u $USER:$PASSWORD http://localhost:15672/api/queues/%2f/ | jq '.[].name' | sed 's/"//g' | xargs -L 1 -I@ curl -XDELETE -sSL -u $USER:$PASSWORD http://localhost:15672/api/queues/%2f/@
# To also delete exchanges uncomment next line
# curl -sSL -u $USER:$PASSWORD http://localhost:15672/api/exchanges/%2f/ | jq '.[].name' | sed 's/"//g' | xargs -L 1 -I@ curl -XDELETE -sSL -u $USER:$PASSWORD http://localhost:15672/api/exchanges/%2f/@

দ্রষ্টব্য: এটি কেবলমাত্র ডিফল্ট vhost /



1

এখানে একটি দ্রুত সংস্করণ রয়েছে ( parallelইনস্টল করুন সুডো এপটি-ইনস্টল সমান্তরাল ইনস্টল করুন) @admenva দ্বারা উত্তরের উত্তরে প্রসারিত

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)


1

এই আদেশগুলি আপনার সমস্ত সারি মুছে ফেলে

python rabbitmqadmin.py \
  -H YOURHOST -u guest -p guest -f bash list queues | \
xargs -n1 | \
xargs -I{} \
  python rabbitmqadmin.py -H YOURHOST -u guest -p guest delete queue name={}

এই স্ক্রিপ্টটি অত্যন্ত সহজ কারণ এটি ব্যবহার করে -f bash, যা সারিগুলি তালিকা হিসাবে আউটপুট করে।

তারপরে আমরা xargs -n1এটিকে একাধিক ভেরিয়েবলে বিভক্ত করতে ব্যবহার করি

তারপরে আমরা এটি ব্যবহার করব xargs -I{}যা নিম্নলিখিত কমান্ডটি চালাবে এবং কমান্ডটি প্রতিস্থাপন {}করবে।


আমি 10 টি পৃথক উত্তরের মতো চেষ্টা করেছি এবং এটি কেবলমাত্র আমার জিনিস যা আমার অন্যান্য সমস্ত সেটিংস না মেরে সারি মুছে ফেলার কাজ করেছে। ধন্যবাদ! আমি বিশ্বাস করতে পারি না খরগোশমেক্টটেলের একটি "সমস্ত সারি ড্রপ করুন" কমান্ডটি নেই।
sudo

বিটিডাব্লু, র‌্যাবিটমক্যাডমিন পেতে আপনার এটিতে গিয়ে http://yourhost:15672/cli/ডাউনলোড করতে হবে।
sudo

1

অ-টেকসই সারিগুলি মুছতে আপনার খরগোশ সার্ভার পুনরায় সেট করার দরকার নেই । কেবল সার্ভারটি বন্ধ করুন এবং আবার শুরু করুন এটি উপলব্ধ অ-টেকসই সারিগুলি সরিয়ে ফেলবে ।


টেকসই সারি সহ? আমি তাই মনে করি না. আমি আপনার উত্তর যোগ্যতা অর্জন করব।
হেন্ডি ইরওয়ান

না, টেকসই সারিগুলি সার্ভারটি বন্ধ করে মুছে ফেলা যায় না। এগুলি রাব্বিটএমকিউ ম্যানেজমেন্ট ওয়েব ইন্টারফেস থেকে সারির নিচে মুছে ফেলা যেতে পারে।
এরাকিউব

আসলে হ্যাঁ, এটি আমাকে সহায়তা করেছিল এবং প্রায় 4500 টি স্বয়ংক্রিয়ভাবে উত্পন্ন সারিগুলি চলে গেছে। মনে হয় এগুলি অ-টেকসই ছিল। ধন্যবাদ!
রোলিস

1

যাদের খরগোশম্যাকডমিন ইনস্টল করতে সমস্যা হয়, আপনার প্রথমে পাইথন ইনস্টল করা উচিত।

ইউএনআইএক্স-এর মতো অপারেটিং সিস্টেম ব্যবহারকারীদের রাবিটেমক্যাডমিনকে PATH এর একটি ডিরেক্টরিতে অনুলিপি করতে হবে, যেমন / usr / স্থানীয় / বিন।

উইন্ডোজ ব্যবহারকারীদের পাইথন তাদের প্যাথ-এ রয়েছে তা নিশ্চিত করতে হবে এবং রাবিটেমক্যাডমিনকে পাইথন.এক্সে খরগোশমেকাডমিন হিসাবে ডেকে আনতে হবে।

তারপর

  1. http://{hostname}:15672/cli/rabbitmqadminডাউনলোড করতে ব্রাউজ করুন ।
  2. সমন্বিত ফোল্ডারে যান তারপরে প্রশাসকের সুবিধার্থে সিএমডি চালান

সারি তালিকা করতে python rabbitmqadmin list queues

সারি মুছে ফেলতে python rabbitmqadmin delete queue name=Name_of_queue

সমস্ত সারি মুছে ফেলতে

1- নীতি ঘোষণা করুন

python rabbitmqadmin declare policy name='expire_all_policies' pattern=.* definition={\"expires\":1} apply-to=queues

2- নীতি সরান

python rabbitmqadmin  delete policy name='expire_all_policies'

0

স্ক্রিপ্ট এবং সম্পূর্ণ রিসেট ছাড়াই সমস্ত সারি এবং এক্সচেঞ্জ সরানোর একটি উপায় রয়েছে। আপনি কেবল অ্যাডমিন ইন্টারফেস থেকে একটি ভার্চুয়াল হোস্ট মুছতে এবং পুনরায় তৈরি করতে পারেন। এটি ভোস্টের জন্যও কাজ করবে /

আপনাকে কেবলমাত্র পুনঃস্থাপনের দরকার হবে তা হল সদ্য তৈরি হওয়া ভোস্টের অনুমতি।


0

ঠিক আছে, এই উত্তরের জন্য গুরুত্বপূর্ণ যোগ্যতা অর্জনকারী: প্রশ্নটি সমাধান করার জন্য কোনও খরগোশম্যাক্টল বা রাবিটমক্যাডমিন ব্যবহার করতে বলবে , আমার উত্তর দুটি ব্যবহারের প্রয়োজন needed এছাড়াও, মনে রাখবেন যে, এই MacOS এর 10.12.6 উপর পরীক্ষা করা হয় এবং সংস্করণ rabbitmqctl এবং rabbitmqadmin যে যখন Homebrew সঙ্গে rabbitmq ইনস্টল ইনস্টল এবং যা হয় সঙ্গে চিহ্নিত করা হয় brew list --versionsযেমন rabbitmq 3.7.0

rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname


0

আর একটি বিকল্প হ'ল সারিগুলির সাথে যুক্ত ভোস্ট মুছে ফেলা। এটি ভোস্টের সাথে যুক্ত সমস্ত কিছু মুছে ফেলবে , তাই সতর্কতা অবলম্বন করুন তবে এটি সহজ এবং দ্রুত।


দ্রষ্টব্য: রাব্বিটএমকিউ টিম মেলিং তালিকাকে পর্যবেক্ষণ করেrabbitmq-users এবং কখনও কখনও স্ট্যাকওভারফ্লোতে প্রশ্নের উত্তর দেয়।


0

আমি উপরের কোডের টুকরো চেষ্টা করেছিলাম কিন্তু আমি কোনও স্ট্রিমিং করি নি।

sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done

আমি একটি ফাইল তৈরি করি যা এতে সমস্ত সারি নাম যুক্ত করে এবং মুছে ফেলার জন্য এটি লাইন দিয়ে লুপ হয় lo লুপগুলির জন্য, while read ...এটি আমার জন্য করেনি। এটি সর্বদা প্রথম সারিতে নাম দিয়ে থামছিল।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.