Laravel Job & Queue System

Laravel হলো একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের জন্য অনেক সুবিধা এনে দিয়েছে। এর অন্যতম চমৎকার একটি ফিচার হলো Job & Queue System। এই সিস্টেমের মাধ্যমে আপনি অ্যাপ্লিকেশনের সময়-নিবিড় কাজগুলোকে ব্যাকগ্রাউন্ডে পাঠিয়ে রাখতে পারেন, ফলে ইউজারদের জন্য অভিজ্ঞতাটি হয় অনেক দ্রুত ও স্মুথ।
এই ব্লগে আমরা শিখবো Laravel-এর Job এবং Queue কী, কেন এটি দরকার, এবং কীভাবে এটি ব্যবহার করা যায়।
✅ Job & Queue System কী?
Laravel-এ Job হচ্ছে এমন একটি ক্লাস, যা নির্দিষ্ট কোন কাজ (task) করার জন্য তৈরি করা হয়। এই কাজটি তাৎক্ষণিকভাবে সম্পন্ন না করে Queue (সারি) তে পাঠিয়ে ব্যাকগ্রাউন্ডে প্রসেস করা হয়।
Queue System হচ্ছে সেই প্রসেস, যেটি ব্যাকগ্রাউন্ডে Job গুলো একে একে রান করে।
🎯 উদাহরণ:
আপনি যদি ইউজার রেজিস্ট্রেশনের পর একটি ইমেইল পাঠাতে চান, তবে এটি সরাসরি না পাঠিয়ে Queue-তে পাঠানো যায়। এতে ইউজার দ্রুত রেজিস্ট্রেশন সম্পন্ন করতে পারে এবং ইমেইল কিছু সেকেন্ড পরে গেলেও সমস্যা হয় না।
🛠 কেন Job & Queue ব্যবহার করবেন?
ইউজার এক্সপেরিয়েন্স উন্নত হয়
অ্যাপ্লিকেশন দ্রুত রেসপন্স দেয়
সময়-নিবিড় কাজ যেমন: ইমেইল, রিপোর্ট জেনারেশন, ভিডিও প্রসেসিং সহজে ব্যাকগ্রাউন্ডে করা যায়
সার্ভারের উপর চাপ কমে
🚀 Laravel-এ Job & Queue সেটআপ
১. Queue ড্রাইভার কনফিগার
.env ফাইলে নিচের মতো সেট করুন:
QUEUE_CONNECTION=database
এর মানে Laravel Queue ডেটাবেজ ব্যবহার করবে Queue সংরক্ষণের জন্য।
২. মাইগ্রেশন তৈরি করুন
php artisan queue:table
php artisan migrate
এতে jobs নামে একটি টেবিল তৈরি হবে।
৩. Job তৈরি করুন
php artisan make:job SendWelcomeEmail
এর ফলে App\Jobs\SendWelcomeEmail নামে একটি Job ক্লাস তৈরি হবে।
উদাহরণ কোড:
namespace App\Jobs;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;
class SendWelcomeEmail implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function handle()
{
Mail::to($this->user->email)->send(new WelcomeEmail($this->user));
}
}
৪. Job Dispatch করুন
use App\Jobs\SendWelcomeEmail;
SendWelcomeEmail::dispatch($user);
এখন এটি সরাসরি ইমেইল না পাঠিয়ে Queue-তে পাঠাবে।
৫. Queue Worker রান করুন
php artisan queue:work
এই কমান্ডটি চালালে Laravel Queue-এর মধ্যে থাকা Job গুলো প্রসেস করা শুরু করবে।
🧠 কিছু গুরুত্বপূর্ণ Queue ড্রাইভার
Laravel বেশ কিছু Queue ড্রাইভার সাপোর্ট করে:
sync– Job সাথে সাথেই এক্সিকিউট হয়database– ডেটাবেজে Queue সংরক্ষণ করেredis– দ্রুত পারফরম্যান্সের জন্য ব্যবহৃত হয়beanstalkd,sqs– বড় স্কেল অ্যাপ্লিকেশনে ব্যবহৃত হয়
⏰ Delayed Job & Retry
Job Dispatch করতে চাইলে Delay ও Retry সেট করা যায়:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(5));
public $tries = 3; // Retry তিনবার
🧪 ফেইলড Job হ্যান্ডলিং
Job যদি ব্যর্থ হয় তাহলে Laravel সেটি failed_jobs টেবিলে সংরক্ষণ করতে পারে। এর জন্য .env এ নিচেরটা যুক্ত করুন:
QUEUE_FAILED_DRIVER=database
এরপর চালান:
php artisan queue:failed-table
php artisan migrate
Laravel-এর Job & Queue System আপনার অ্যাপ্লিকেশনকে আরও দক্ষ, দ্রুত এবং ইউজার-ফ্রেন্ডলি করতে সাহায্য করে। যেসব কাজ সময় সাপেক্ষ, যেমন ইমেইল পাঠানো, রিপোর্ট তৈরি, নোটিফিকেশন পাঠানো — এসব সহজেই ব্যাকগ্রাউন্ডে পাঠিয়ে রাখতে পারেন Queue-এর মাধ্যমে।
Queue নিয়ে কাজ করতে ভয় পাবার কিছু নেই — একটু প্র্যাকটিস করলে এটি হয়ে উঠবে Laravel ডেভেলপারদের জন্য একটি অসাধারণ টুল।




