Sidekiq, Resque এর মাধ্যমে Background Jobs ইমপ্লিমেন্ট করা

Rails এর Background Jobs এবং Active Job - রুবি অন রেইল (Ruby on Rails) - Web Development

232

Background Jobs হলো এমন কাজ যা প্রধান অ্যাপ্লিকেশনের রেসপন্স টাইমের সাথে সম্পর্কিত নয় এবং সেটি ব্যাকগ্রাউন্ডে সম্পন্ন করা হয়। এটি সাধারণত দীর্ঘ-running প্রসেস যেমন ইমেইল পাঠানো, ফাইল আপলোড করা, বা ডেটাবেসে ভারী হিসাব করার জন্য ব্যবহৃত হয়। Ruby on Rails-এ Sidekiq এবং Resque এর মাধ্যমে এই ধরনের কাজকে কার্যকরভাবে পরিচালনা করা যায়।

এখানে আমরা Sidekiq এবং Resque ব্যবহার করে Background Jobs ইমপ্লিমেন্ট করার পদ্ধতি নিয়ে আলোচনা করবো।


Sidekiq কী এবং কেন এটি ব্যবহার করবেন?

Sidekiq হলো একটি জনপ্রিয় background job processing টুল, যা Ruby এবং Rails অ্যাপ্লিকেশনগুলোর জন্য উচ্চ পারফরম্যান্স এবং স্কেলেবল সমাধান প্রদান করে। এটি Redis ব্যবহার করে এবং মাল্টি-থ্রেডিং সাপোর্ট দেয়, যার মাধ্যমে একাধিক কাজ খুব দ্রুত এবং দক্ষতার সাথে সম্পন্ন করা সম্ভব।

Sidekiq এর সুবিধা:

  • পারফরম্যান্স: Sidekiq মাল্টি-থ্রেডিং প্রযুক্তি ব্যবহার করে, যা একাধিক জব প্যারালেলভাবে এক্সিকিউট করার সুযোগ দেয়।
  • স্কেলেবিলিটি: Redis-এর মাধ্যমে জব কিউ ম্যানেজ করে এবং অ্যাপ্লিকেশন স্কেল করতে সহায়তা করে।
  • রিচ ফিচারস: Sidekiq এর কাছে রয়েছে retry mechanisms, error handling, এবং web UI-র মতো অনেক ফিচার।

Sidekiq সেটআপ এবং ইনস্টলেশন

Step 1: sidekiq জেমটি ইনস্টল করা

প্রথমে আপনার Gemfile-এ sidekiq জেমটি যোগ করুন:

gem 'sidekiq'

তারপর bundle install কমান্ড চালান।

Step 2: Redis ইনস্টল করা

Sidekiq Redis ব্যবহার করে কাজ করে, তাই আপনাকে Redis ইনস্টল করতে হবে। Redis ইনস্টল করতে আপনার সিস্টেমে নিচের কমান্ড ব্যবহার করতে পারেন:

  • MacOS (Homebrew ব্যবহার করে):

    brew install redis
    
  • Ubuntu:

    sudo apt-get install redis-server
    
Step 3: Sidekiq Worker তৈরি করা

একটি নতুন Worker ক্লাস তৈরি করুন, যা ব্যাকগ্রাউন্ড জব প্রক্রিয়াকরণ করবে। ধরুন, আপনি ইমেইল পাঠানোর একটি ব্যাকগ্রাউন্ড কাজ করতে চান:

# app/workers/email_worker.rb
class EmailWorker
  include Sidekiq::Worker

  def perform(user_id)
    user = User.find(user_id)
    UserMailer.welcome_email(user).deliver_now
  end
end

এখানে, perform মেথডে আপনার কার্যকর কাজটি থাকবে, যেমন ইমেইল পাঠানো।

Step 4: Worker রান করা

ব্যাকগ্রাউন্ডে জব রান করার জন্য, আপনি EmailWorker.perform_async(user.id) কল করতে পারেন:

EmailWorker.perform_async(user.id)

এটি ব্যাকগ্রাউন্ডে কাজ করবে, অর্থাৎ রিলিজ পেজ লোডের সময় ব্যবহারকারী ইমেইল পাঠানোর জন্য অপেক্ষা করবে না।

Step 5: Sidekiq সার্ভার চালানো

Sidekiq চালাতে, নিচের কমান্ডটি রান করুন:

bundle exec sidekiq

এটি Sidekiq এর সার্ভার চালু করবে এবং ব্যাকগ্রাউন্ড জবগুলো প্রক্রিয়া করা শুরু করবে।


Resque কী এবং কেন এটি ব্যবহার করবেন?

Resque হলো আরেকটি জনপ্রিয় background job processing লাইব্রেরি যা Ruby অ্যাপ্লিকেশনের জন্য তৈরি। Resque Redis ব্যবহার করে এবং এটি মূলত queued jobs এর মাধ্যমে কাজ করে।

Resque এর সুবিধা:

  • Redis-backed: Resque Redis ব্যবহার করে কিউ ম্যানেজ করে।
  • অল্প কমপ্লেক্সিটি: সোজা সাপ্টা কোডিং ইন্টারফেস এবং সহজ ইনস্টলেশন।
  • প্লাগইন সাপোর্ট: Resque বিভিন্ন প্লাগইন সাপোর্ট করে, যেমন Resque Scheduler।

Resque সেটআপ এবং ইনস্টলেশন

Step 1: resque জেমটি ইনস্টল করা

প্রথমে Gemfile-এ resque জেমটি যোগ করুন:

gem 'resque'

তারপর bundle install চালান।

Step 2: Redis ইনস্টল করা

Resque Redis ব্যবহার করে কাজ করে, তাই Redis ইনস্টল করতে হবে, যেমন উপরে Sidekiq সেটআপে করা হয়েছে।

Step 3: Resque Worker তৈরি করা

Resque-তে একটি Worker ক্লাস তৈরি করতে হয়, যা ব্যাকগ্রাউন্ড জব পরিচালনা করবে। উদাহরণস্বরূপ, ইমেইল পাঠানোর জন্য:

# app/workers/email_worker.rb
class EmailWorker
  @queue = :email_queue

  def self.perform(user_id)
    user = User.find(user_id)
    UserMailer.welcome_email(user).deliver_now
  end
end

এখানে, @queue ব্যবহার করে কিউ নির্ধারণ করা হচ্ছে এবং perform মেথডে কাজটি প্রক্রিয়া করা হচ্ছে।

Step 4: Worker রান করা

Resque তে ব্যাকগ্রাউন্ড কাজ করার জন্য, আপনি Resque.enqueue মেথড ব্যবহার করবেন:

Resque.enqueue(EmailWorker, user.id)
Step 5: Resque সার্ভার চালানো

Resque সার্ভার চালানোর জন্য, নিচের কমান্ডটি ব্যবহার করুন:

QUEUE=email_queue rake resque:work

এটি Resque সার্ভার চালু করবে এবং কিউতে থাকা জবগুলো প্রক্রিয়া করবে।


Sidekiq বনাম Resque

  • পারফরম্যান্স: Sidekiq মাল্টি-থ্রেডিং ব্যবহার করে, তাই এটি Resque-এর তুলনায় দ্রুত এবং বেশি স্কেলেবল। তবে, Resque আরও সহজ এবং সরল।
  • সাপোর্ট এবং কমিউনিটি: Sidekiq এর কমিউনিটি বেশি অ্যাকটিভ এবং এটির জন্য আরও উন্নত ফিচার রয়েছে। Resque তুলনায় কিছুটা পুরানো কিন্তু এখনও ব্যাপকভাবে ব্যবহৃত হয়।
  • এডভান্সড ফিচারস: Sidekiq এর সাথে আপনি আরও অনেক ফিচার পাবেন, যেমন retry mechanism, cron jobs, etc., যা Resque-তে কিছুটা সীমিত।

সারমর্ম

Background Jobs হলো দীর্ঘ-running কাজ যেগুলো রেলস অ্যাপ্লিকেশনটির রেসপন্স টাইমে বাধা সৃষ্টি না করে ব্যাকগ্রাউন্ডে কার্যকর করা হয়। Sidekiq এবং Resque দুটি জনপ্রিয় টুল, যা এই ধরনের কাজ পরিচালনা করতে ব্যবহৃত হয়। Sidekiq উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে, যেখানে Resque সহজ এবং সরল একটি সমাধান। উভয়ই Redis ব্যবহার করে এবং তাদের নিজস্ব কাজের জন্য বিশেষভাবে কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...