উত্তর:
প্রথমে আপনার সারিগুলি তালিকাভুক্ত করুন:
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
rabbitmqctl list_queues | grep 0 | awk '{print $1}' | xargs -I qn rabbitmqadmin delete queue name=qn
grep $'\t0'
কিছু করতে চান বা কিছু করতে পারেন।
সঙ্গে 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
ম্যানেজমেন্ট প্লাগইন এবং নীতিগুলি সহ আসলেই সুপার ইজি :
গোটো ম্যানেজমেন্ট কনসোল (লোকালহোস্ট: 15672)
যান প্রশাসনের ট্যাব
গোটো পলিসি ট্যাব (ডানদিকে)
যোগ নীতি
ক্ষেত্রগুলি পূরণ করুন
সংরক্ষণ
এটা চেষ্টা কর:
rabbitmqadmin list queues name | awk '{print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
*** 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
আপনার যদি খরগোশমেকডমিন ইনস্টল না থাকে তবে খরগোশমেক্টিটল দিয়ে সারিগুলি সাফ করার চেষ্টা করুন:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
delete_queue
বা purge_queue
আদেশও নেই rabbitmqctl
। আমি অনেকগুলি সারি মুছে ফেলতে চাই যা দেখে মনে হচ্ছে স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছে এবং আমি অতিরিক্ত সফ্টওয়্যার ইনস্টল করতে চাই না rabbitmqadmin
...
rabbitmqctl purge_queue
ম্যানুয়ালি এখানে কাজ। আমার কেবলমাত্র -p <ভার্চুয়াল-হোস্ট>
delete_queue
এবং purge_queue
পাওয়া যায় rabbitmqctl
এবং আমি তাদের সাফল্যের সাথে সম্পন্ন করেছি। সম্ভবত আপনি একটি পুরানো সংস্করণে আছেন।
আমি একটি মুছে ফেলা র্যাবিট এমকিউএস.এস তৈরি করেছি, যা আপনার পছন্দসই প্যাটার্নের সাথে মেলে এমন একটিকে বেছে নিয়ে এর জন্য সারিগুলির তালিকা অনুসন্ধান করার জন্য আর্গুমেন্ট গ্রহণ করে। আপনি যদি কোনও যুক্তি না দিয়ে থাকেন তবে এটি সমস্ত মুছে ফেলবে! এটি আপনাকে মুছে ফেলতে থাকা সারিগুলির তালিকা প্রদর্শন করে, ধ্বংসাত্মক কিছু করার আগে আপনাকে ছাড়তে দেয়।
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"
আপনি যে আর্গুমেন্টগুলি দিয়ে যাচ্ছেন তার বিপরীতে যদি আপনি বিভিন্ন মিল চান তবে আপনি গ্রাইপটিকে লাইন চারে পরিবর্তন করতে পারেন। সমস্ত সারি মুছে ফেলার সময়, এটিতে টানা তিনটি ফাঁকা স্থান থাকা মুছে ফেলা হবে না, কারণ আমি বুঝতে পেরেছিলাম যে ব্যক্তিরা বিভিন্ন ভাষায় খরগোশ ছাপিয়ে রেবিটম্যাক্টল করেছেন তাদের তুলনায় ঘটনাটি বিরল হবে।
উপভোগ করুন!
আপনি যদি সারিগুলি অপব্যবহারের কারণে মুছে ফেলার চেষ্টা করছেন এবং আপনি পুনরায় সেট করতে চান না, তবে একটি বিকল্প হ'ল একটি নীতিমালার মাধ্যমে কাতারে টিটিএল খুব কম সেট করা হবে, টিটিএল পাস হওয়ার পরে কাতগুলি স্বয়ংক্রিয়ভাবে মোছার অপেক্ষা করুন 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
খরগোশের সংস্করণ ৩.7.১০ এ আপনি রুট অনুমতি নিয়ে কমান্ডের নীচে চলতে পারেন:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl delete_queue
পাওয়ারশেল দিয়ে এটি করার একটি উপায় এখানে। ইউআরএল আপডেট করার প্রয়োজন হতে পারে
$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)
}
আপনি নীচে হিসাবে খরগোশক্টাক্টল ইয়াল ব্যবহার করতে পারেন:
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
অ্যাক্সেসযোগ্য না হয় তার জন্য উপযুক্ত।
আপনি যদি কেবল খালি নয় (খুব দ্রুত) সারিগুলি মুছে ফেলতে চান তবে:
rabbitmqctl list_queues | awk '$2!=0 { print $1 }' | sed 's/Listing//' | xargs -L1 rabbitmqctl purge_queue
আমার জন্য, একটি সারি মুছে ফেলতে 2-3 সেকেন্ড সময় লাগে (উভয় শূন্য এবং খালি নয়), সুতরাং 50 টি সারির মধ্য দিয়ে পুনরাবৃত্তি করা যেমন একটি ব্যথা হয় যখন আমি কেবল তাদের 10 টি মুছে ফেলতে পারি (40/50 খালি)।
আমি খরগোশমেক্টিটেল এবং পুনর্নির্দেশ আদেশগুলি চেষ্টা করেছি কিন্তু সেগুলি খুব ধীর।
এটি আমি খুঁজে পাওয়া সবচেয়ে দ্রুততম উপায় (আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রতিস্থাপন করুন):
#!/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 /
সারি তালিকা করতে,
./rabbitmqadmin -f tsv -q list queues
একটি সারি মুছে ফেলতে,
./rabbitmqadmin delete queue name=name_of_queue
এখানে একটি দ্রুত সংস্করণ রয়েছে ( 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)
এই আদেশগুলি আপনার সমস্ত সারি মুছে ফেলে
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{}
যা নিম্নলিখিত কমান্ডটি চালাবে এবং কমান্ডটি প্রতিস্থাপন {}
করবে।
http://yourhost:15672/cli/
ডাউনলোড করতে হবে।
অ-টেকসই সারিগুলি মুছতে আপনার খরগোশ সার্ভার পুনরায় সেট করার দরকার নেই । কেবল সার্ভারটি বন্ধ করুন এবং আবার শুরু করুন এটি উপলব্ধ অ-টেকসই সারিগুলি সরিয়ে ফেলবে ।
যাদের খরগোশম্যাকডমিন ইনস্টল করতে সমস্যা হয়, আপনার প্রথমে পাইথন ইনস্টল করা উচিত।
ইউএনআইএক্স-এর মতো অপারেটিং সিস্টেম ব্যবহারকারীদের রাবিটেমক্যাডমিনকে PATH এর একটি ডিরেক্টরিতে অনুলিপি করতে হবে, যেমন / usr / স্থানীয় / বিন।
উইন্ডোজ ব্যবহারকারীদের পাইথন তাদের প্যাথ-এ রয়েছে তা নিশ্চিত করতে হবে এবং রাবিটেমক্যাডমিনকে পাইথন.এক্সে খরগোশমেকাডমিন হিসাবে ডেকে আনতে হবে।
তারপর
http://{hostname}:15672/cli/rabbitmqadmin
ডাউনলোড করতে ব্রাউজ করুন ।সারি তালিকা করতে
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'
স্ক্রিপ্ট এবং সম্পূর্ণ রিসেট ছাড়াই সমস্ত সারি এবং এক্সচেঞ্জ সরানোর একটি উপায় রয়েছে। আপনি কেবল অ্যাডমিন ইন্টারফেস থেকে একটি ভার্চুয়াল হোস্ট মুছতে এবং পুনরায় তৈরি করতে পারেন। এটি ভোস্টের জন্যও কাজ করবে /
।
আপনাকে কেবলমাত্র পুনঃস্থাপনের দরকার হবে তা হল সদ্য তৈরি হওয়া ভোস্টের অনুমতি।
ঠিক আছে, এই উত্তরের জন্য গুরুত্বপূর্ণ যোগ্যতা অর্জনকারী: প্রশ্নটি সমাধান করার জন্য কোনও খরগোশম্যাক্টল বা রাবিটমক্যাডমিন ব্যবহার করতে বলবে , আমার উত্তর দুটি ব্যবহারের প্রয়োজন 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
আর একটি বিকল্প হ'ল সারিগুলির সাথে যুক্ত ভোস্ট মুছে ফেলা। এটি ভোস্টের সাথে যুক্ত সমস্ত কিছু মুছে ফেলবে , তাই সতর্কতা অবলম্বন করুন তবে এটি সহজ এবং দ্রুত।
দ্রষ্টব্য: রাব্বিটএমকিউ টিম মেলিং তালিকাকে পর্যবেক্ষণ করেrabbitmq-users
এবং কখনও কখনও স্ট্যাকওভারফ্লোতে প্রশ্নের উত্তর দেয়।
আমি উপরের কোডের টুকরো চেষ্টা করেছিলাম কিন্তু আমি কোনও স্ট্রিমিং করি নি।
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 ...
এটি আমার জন্য করেনি। এটি সর্বদা প্রথম সারিতে নাম দিয়ে থামছিল।
rabbitmqadmin list queues|awk 'NR>3{print $4}'|head -n-1|xargs -I qname rabbitmqadmin delete queue name=qname
rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged