Laravel 11 / Foundation\Bus PendingDispatch::onConnection()

laravel 11 pendingdispatch onconnection
15 آذر 1403

آشنایی با ويژگی onConnection در PendingDispatch در لاراول ۱۱


سلام! امروز می‌خواهیم در مورد یک ویژگی جالب در لاراول ۱۱ به نام onConnection صحبت کنیم. اگر شما هم از توسعه‌دهندگان لاراول هستید، حتماً با مفهوم صف‌ها (Queues) آشنا هستید. این قابلیت به شما اجازه می‌دهد تا مشخص کنید که یک تسک (Task) باید روی چه ارتباطی (Connection) اجرا شود. این ویژگی کمک می‌کند که تسک‌های مختلف را در کانکشن‌های متفاوت مدیریت کنیم و به صورت بهتری کنترل داشته باشیم.


تصور کنید که شما چندین ارتباط به صف‌ها دارید؛ مثلاً یکی برای پایگاه داده ، دیگری برای Redis و یکی دیگر برای Beanstalk. با استفاده از این ویژگی، می‌توانید به راحتی تعیین کنید که هر تسک باید روی کدام ارتباط اجرا شود. این قابلیت کاربردی به تکمیل مدیریت تسک‌ها کمک می‌کند و کارایی اپلیکیشن شما را افزایش می‌دهد.


همچنین، این قابلیت به تیم‌های توسعه کمک می‌کند تا تسک‌هایی که نیاز به اجرا در ارتباطات خاصی دارند را راحت‌تر پیاده‌سازی و پردازش کنند. به عنوان مثال، اگر شما یک تسک را دارید که نیاز به استفاده از پایگاه داده خاصی دارد، با تعیین ارتباط صحیح می‌توانید اطمینان حاصل کنید که تسک شما در بهترین حالت اجرا شود.


حالا بیایید یک مثال عملی از این قابلیت را با هم بررسی کنیم تا بهتر متوجه شوید که چطور می‌توانید از آن در پروژه‌های خود استفاده کنید. ما یک تسک ساده برای ارسال ایمیل ایجاد می‌کنیم و با استفاده از onConnection، آن را روی ارتباط خاصی اجرا می‌کنیم.


کد نمونه برای استفاده از onConnection در لاراول ۱۱


use Illuminate\Bus\PendingDispatch;

// وقتی که تسک را برای آهنگ ارسال می‌کنیم
PendingDispatch::dispatch(new SendEmailJob($user))
->onConnection('redis');

توضیح خط به خط کد


use Illuminate\Bus\PendingDispatch;
این خط به ما امکان می‌دهد تا کلاس PendingDispatch را وارد کنیم، که برای ارسال تسک نیاز است.


PendingDispatch::dispatch(new SendEmailJob($user))
این خط یک تسک جدید به نام SendEmailJob را برای کاربری که از آن استفاده کرده‌ایم، به صف ارسال می‌کند.


->onConnection('redis')
با این بخش از کد، ما مشخص می‌کنیم که این تسک باید بر روی ارتباط redis اجرا شود. به این ترتیب، می‌توانیم اطمینان حاصل کنیم که تسک ما در محیط مناسب خود اجرا می‌شود.


سوالات متداول

؟

ویژگی onConnection در لاراول ۱۱ چه کاری انجام می‌دهد؟

؟

چطور می‌توانم از onConnection در پروژه‌ام استفاده کنم؟

؟

آیا می‌توانم چندین ارتباط مختلف برای تسک‌های مختلف داشته باشم؟