💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Mehrjoo
ترتیب لیسنر ها
محسن موحد حل شده توسط محسن موحد

سلام ببخشید که زیاد سوال میکنم و بعضی چیز‌ها رو تکرار میکنم

من از لاراول 11 استفاده میکنم دوتا لیسنر رو ساختم و برای ارتباطشون نیاز به اقدام خاصی نبود . یعنی فایلی که استاد اومد توش تنظیمات اتصال ایونت با لیسنر رو بر قرار کرد نبود . ظاهرا توی لاراول 11 خودش اتصال برقرار میکنه .

مشکل اینجاست که من دوتا لیسنر رو ساختم و کار هم میکنه ولی اول دومی رو چاپ کرد بعد اولی . لیسنر اول برای ارسال ایمیل بود و دومی برای پروسس ویدئو بود . موقع چاپ اطلاعات اول پروسس ویدئو اجرا شد بعد ارسال ایمیل

سلام،

برای اینکه بتونی اولویت اجرا رو مدیریت کنی، می‌تونی دو تا صف جداگانه داشته باشی. توی فایل پیکربندی config/queue.php، می‌تونی یک صف با اولویت بالا و یک صف با اولویت پایین درست کنی:

'high' => [
   'driver' => 'database',
   'connection' => env('DB_QUEUE_CONNECTION'),
   'table' => env('DB_QUEUE_TABLE', 'jobs'),
   'queue' => env('DB_QUEUE', 'default'),
   'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
   'after_commit' => false,
],
'low' => [
   'driver' => 'database',
   'connection' => env('DB_QUEUE_CONNECTION'),
   'table' => env('DB_QUEUE_TABLE', 'jobs'),
   'queue' => env('DB_QUEUE', 'default'),
   'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
   'after_commit' => false,
],

بعد از اینکه این تنظیمات رو انجام دادی، وقتی می‌خوای رویدادها رو فراخوانی کنی، می‌تونی مشخص کنی که توی کدوم صف اجرا شن، با استفاده از متد onQueue():

VideoEvent::dispatch()->onQueue('high');
EmailEvent::dispatch()->onQueue('low');

در انتها، فقط کافیه صف‌ها رو به این شکل اجرا کنی:

php artisan queue:work --queue=high,low

مستندات رو هم از این لینک میتونی بخونی: Laravel Queues.

بهترین پاسخ
محسن موحد ۳۱ شهریور ۱۴۰۳، ۲۲:۴۴