আমি কীভাবে একক সারি থেকে সমস্ত বার্তা মুছে ফেলতে পারি?


142

ক্লাইটি ব্যবহার করে আমি কীভাবে একটি একক সারিতে সমস্ত বার্তা মুছব? আমার সারির নাম আছে এবং আমি এটি পরিষ্কার করতে চাই।

উত্তর:


121

রাবিটেমক্যাডমিন এটির জন্য উপযুক্ত সরঞ্জাম

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

5
আমার খরগোশ ইনস্টল করার সরঞ্জামটি খুঁজে পেতে আমার খুব কষ্ট হয়েছিল। অবশেষে আমি এখান থেকে এটি ডাউনলোড করেছি: hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_3_5/…
সত্য ঘটনা

5
আপনার যদি ইতিমধ্যে ম্যানেজমেন্ট প্লাগইন ইনস্টল করা থাকে তবে আপনি এটিকে ডাউনলোড করতে পারেনhttp://rabbitserver:15672/cli/
মোরলোচ

140

আপনি সরাসরি এই আদেশটি চালাতে পারেন

sudo rabbitmqctl purge_queue queue_name

15
অথবা, যদি আপনি একটি ভার্চুয়াল হোস্ট আছে, নাrabbitmqctl purge_queue queue_name -p my_virt_host
ছাগল

4
sudo rabbitmqctl -h চালান এবং আপনার বর্তমান খরগোশ দ্বারা তালিকাভুক্ত ক্যামম্যান্ডের চেক তালিকা। যদি এটি না থাকে তবে এর অর্থ হ'ল খরগোশকের বর্তমান সংস্করণটি এই বৈশিষ্ট্যটিকে সমর্থন করে না।
অনুরাগ জেইন

এটি আমার পক্ষে কাজ করে না - আমার গ্রাহকরা সরিয়ে দেওয়ার সাথে সাথে সারিটি এখনও কার্যগুলিতে পূর্ণ ছিল।
জেমি ইভানভ

এটি github.com/rabbitmq/rabbitmq-server/pull/215 এবং rabbitmq.com/changelog.html এর ভিত্তিতে 3.5.4 বা 3.6.0 এ কার্যকর করা যেতে পারে । আপনি অনুযায়ী একটি পুরোনো সংস্করণ, rabbitmqadmin যদি stackoverflow.com/a/18267342/272387 যথাসাধ্য সাহায্যের।
রিচলভ

1
... এবং github.com/rabbitmq/rabbitmq-server/releases/tag/…যাচাই করা , এই বৈশিষ্ট্যটি 3.5.4 এ হাজির।
রিচলভ

16

সারি মুছে ফেলার জন্য আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন (এপিআই ডকের আরও তথ্য):

curl -i -u guest:guest -XDELETE http://localhost:15672/api/queues/vhost_name/queue_name/contents

এটি কতটা ভয়ঙ্কর কাজ করেছে। অনিচ্ছাকৃতভাবে এই ঘটনার হাত থেকে রক্ষা করার কোনও উপায়? যেমন উত্পাদনের সার্ভারগুলির জন্য এমন একটি কনফিগার যা দুর্ঘটনাজনিত ডেটা ক্ষতি রোধ করতে এই কার্যকারিতাটি অক্ষম করে?
যিশাইয়

হ্যাঁ, সুরক্ষাটি হ'ল "অতিথি" মুছে ফেলা হবে "মুছে ফেলুন" কমান্ডটি ব্যবহার করে
ওশেন এয়ারড্রপ

16

রাব্বিটএমকিউ অ্যাডভান্সড মেসেজ কুইউনিং প্রোটোকল (এএমকিউপি) প্রয়োগ করে যাতে আপনি এই জাতীয় সামগ্রীর জন্য জেনেরিক সরঞ্জামগুলি ব্যবহার করতে পারেন।

ডেবিয়ান / উবুন্টু বা অনুরূপ সিস্টেমে, করুন:

sudo apt-get install amqp-tools
amqp-delete-queue -q celery  # where celery is the name of the queue to delete

কিছু সংস্করণে খরগোশমাদমিন না রাখার জন্য এটি একটি ভাল সমাধান।
উইসঝো

11
এটি পুরো সারি মুছে দেয়, কেবল এটি শুদ্ধ করে না। সুতরাং সারিটি আর বিদ্যমান নেই এবং পরে আপনাকে খালি সারিটি আবার শুরু করতে হবে।
krob

13

রাবিটএমকিউতে 2 টি কিউয়ের নিচে রয়েছে

  1. মুছে ফেলা
  2. রেচক পদার্থ

মুছুন - সারি মুছে ফেলবে

পার্জ করুন - এটি সারিটি খালি করবে (অর্থ সারি থেকে বার্তাগুলি সরিয়ে দেয় তবে সারি এখনও বিদ্যমান)


1
এটি সহজ বলে মনে হতে পারে তবে আমার এই উত্তরটির প্রয়োজন ছিল।
নিকোলাস বাছাই

8

গুরুত্বপূর্ণ দ্রষ্টব্য: এটি সমস্ত ব্যবহারকারী এবং কনফিগারেশন মুছে ফেলবে।

অ্যালার্ট !!

অ্যালার্ট !!

আপনি ব্যবহারকারী এবং কনফিগারেশন সহ সমস্ত সারি থেকে ডেটা মুছতে না চান যতক্ষণ না আমি এই উত্তরটির পরামর্শ দিচ্ছি না। শুধু এটি রিসেট !!!

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

28
এটি আপনার ব্যবহারকারী এবং অন্যান্য কনফিগারগুলি পুনরায় সেট করে!
কোডউইথচিিজ

আমি এটি ইউনিট পরীক্ষার অংশ হিসাবে ব্যবহার করেছি। উদাহরণস্বরূপ, আমি সমস্ত কিছু সাফ করছি, তারপরে এটিকে সব স্ট্যাকওভারফ্লো / কোয়েশনস / 4545660/… এর মাধ্যমে প্রোগ্রামযুক্তভাবে সেট আপ করুন এবং তারপরে কিছু বার্তা পপুলেট করুন এবং বার্তাটি গেছে কিনা তা নিশ্চিত করার জন্য ব্ল্যাক বক্স টেস্টিং করুন। এই উদ্দেশ্যে দুর্দান্ত কাজ করে। :)
জেমস ওরাভেক

3
এটা সত্যিই নিষ্পাপ। এটি একটি গুরুতর প্রশ্নের উত্তর হিসাবে গ্রহণযোগ্য নয়। এটি সমস্ত সার্ভারের ডেটা নষ্ট করে দেবে।
আন্দ্রে পাস্তোর

2
আপনার স্টোরেজটি শূন্য করা এবং ওএস পুনরায় ইনস্টল করার ফলে ডেটা থেকে মুক্তি পাওয়া যায়; এটি ওপি যা জিজ্ঞাসা করছে তা নয়
istepaniuk

5

আমি দেরী করে অনুমান করি তবে অন্যদের রেফারেন্সের জন্য, এটি পিকা দিয়ে করা যেতে পারে

import pika
host_ip = #host ip
channel = pika.BlockingConnection(pika.ConnectionParameters(host_ip,
                                                        5672,
                                                        "/",
credentials=pika.PlainCredentials("username","pwd"))).channel()
print "deleting queue..", channel.queue_delete(queue=queue_name)

1
হাই @prajnavantha পিকার কোন পদ্ধতিতে কি পরিষ্কার কোনও বার্তা আছে? (সারি মুছুন না)
জেড হান

2

আমি এটি সফলভাবে amqp- ব্যবহারগুলিampq-purge থেকে ব্যবহার করেছি :

git clone https://github.com/dougbarth/amqp-utils.git
cd amqp-utils
# extracted from Rakefile
echo "source 'https://rubygems.org'
gem 'amqp', '~> 0.7.1'
gem 'trollop', '~> 1.16.2'
gem 'facets', '~> 2.9'
gem 'clio', '~> 0.3.0'
gem 'json', '~> 1.5'
gem 'heredoc_unindent', '~> 1.1.2'
gem 'msgpack', '~> 0.4.5'" > Gemfile
bundle install --path=$PWD/gems
export RUBYLIB=.
export GEM_HOME=$PWD/gems/ruby/1.9.1

ruby bin/amqp-purge -v -V /vhost -u user -p queue
# paste password at prompt

2

অর্ডার ইন শুধুমাত্র বার্তা মুছে কিউ ব্যবহার থেকে:

sudo rabbitmqctl --node <nodename> purge_queue <queue_name>

জন্য একটি সারিতে মুছতে যা খালি (হয় --if খালি ) অথবা কোন ভোক্তাদের (হয়েছে --if-অব্যবহৃত ) ব্যবহার:

sudo rabbitmqctl --node <nodename> delete_queue <queue_name> --if-empty

অথবা

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