Honeybadger-এ আমরা সাইডকিউ (Sidekiq) খুব বেশি ব্যবহার করি, এবং এটি চমৎকার। কিন্তু একটি সমস্যা আমি খুব বেশি ফেস করি।
...আপনি দেখছেন, আমি সাধারণত ডেভেলপমেন্ট মোডে সাইডকিউ রান করি না। কিন্তু ম্যানুয়াল টেস্টিং করার সময়, আমি অনেক জব এনকিউ করি। তাই পরের বার যখন আমি সাইডকিউ রান করি, সেটি সকল জব প্রসেস করার চেষ্টা করে। ভালো না।
একটি সাইডকিউ কিউ থেকে জব ডিলিট করার কোড স্নিপেট খুঁজে পাওয়া সহজ। কিন্তু আমাদের অনেক কিউ রয়েছে। আমি সকল কিউ থেকে জব ক্লিয়ার করতে চাই। কিছু খোঁজার পর, আমি একটি সমাধান পেলাম যা খুব ভালো কাজ করে। তদрьশ্য!
# আমি 본래 একটি বেশি ভার্বোজ কোড লিখেছিলাম কিন্তু mperham, Sidekiq-এর স্রষ্টা, আমাকে সঠিক পথ দেখিয়েছেন :) Sidekiq::Queue.all.each(&:clear) এটি করার আরও ডাইরেক্ট উপায় রয়েছে, কিন্তু এই টি শুধু সাইডকিউর পাবলিক API-তে ডিফাইন করা মেথডগুলো ব্যবহার করে, তাই আশা করি ইন্টারনালস চেঞ্জ হলেও এটি কাজ করবে।
এখন আরও ইমোজির সাথে!
আপনি যদি সাইডকিউ সোর্সকে কয়েকভাবে পড়েন, তবে আপনি লক্ষ্য করবেন আপনি 💣 ইমোজি ব্যবহার করতে পারেন clear মেথড ইনভোক করার জন্য। মজা নয়:
# https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/api.rb#L255 alias_method :💣, :clear তাহলে আমরা আমাদের "clear all queues" কোডটি এমনভাবে রি-রাইট করতে পারি:
Sidekiq::Stats.new.queues.each { |k, v| Sidekiq::Queue.new(k).💣 } এবং যেহেতু ইমোজি খুব কুল, আমরা আমাদের নিজস্ব 💀 মেথড তৈরি করতে পারি মাস ডিলিশনের জন্য।
def 💀 Sidekiq::Stats.new.queues.each { |queue_name, _| Sidekiq::Queue.new(queue_name).💣 } end